17 javascript jquery
我需要检查用户是否有焦点窗口,我现在正在这样做:
var isonfocus=true;
window.onblur = function(){
isonfocus=false;
}
window.onfocus = function(){
isonfocus=true;
}
Run Code Online (Sandbox Code Playgroud)
每当我需要检查用户是否有焦点窗口我就是这么做的if(isonfocus==true).
问题:如果用户在页面加载之前失去焦点,即使我这样做
if(isonfocus==true)也会返回true,即使窗口不在焦点上,并且将var定义为false var isonfocus=false;也会反过来.
有人能帮我吗?谢谢.
更新
想象一下PTC(付费点击)网站,当您点击要查看的广告时,大多数网站都会验证用户是否实际看到了广告客户网站(有焦点)还是没有(失去焦点).
这与我需要的类似,我需要一种方法来验证用户是否在焦点上有窗口(包含iframe).
要获得焦点,用户可以单击iframe,文档或选项卡.
请注意,这需要适用于所有主流浏览器.
Jam*_*mes 49
为什么不使用hasFocus方法,例如
if (document.hasFocus()) {
...
}
Run Code Online (Sandbox Code Playgroud)
如果你需要处理iframe,那么你的支票就变成了或者例如
function isFocused() {
return document.hasFocus() || document.getElementById('iframe').contentWindow.document.hasFocus();
}
Run Code Online (Sandbox Code Playgroud)
Dhi*_*ish 10
您可以document.visibilityState用来知道页面是否在焦点.
小智 5
var has_focus = true;
function loading_time() {
$(":focus").each(function() {
if($(this).attr("id")=="iframeID") has_focus = true;
});
if(has_focus==true) alert('page has focus');
else alert('page has not focus');
setTimeout("loading_time()", 2000);
}
window.onblur = function(){
has_focus=false;
}
window.onfocus = function(){
has_focus=true;
}
$(window).load(function(){
setTimeout("loading_time()", 2000);
});
Run Code Online (Sandbox Code Playgroud)
为了提高效率,您需要var has_focus = false;使用户单击页面上的某处。