Javascript 在Mobile Safari中检测是否移动到新选项卡
我有一系列打开弹出窗口(Mobile Safari中的新选项卡)的页面。每个弹出窗口都需要知道它们何时是焦点。在桌面上,我们使用Javascript 在Mobile Safari中检测是否移动到新选项卡,javascript,iphone,ios,ipad,mobile-safari,Javascript,Iphone,Ios,Ipad,Mobile Safari,我有一系列打开弹出窗口(Mobile Safari中的新选项卡)的页面。每个弹出窗口都需要知道它们何时是焦点。在桌面上,我们使用window.onblur和window.onfocus来驱动这种行为。然而,这些活动在iPad上都不起作用。我还尝试了window.onpageshow和window.onpagehide,它们似乎也没有在正确的时间启动。我有一个测试HTML文件: <html> <head> <script language="javascript"&g
window.onblur
和window.onfocus
来驱动这种行为。然而,这些活动在iPad上都不起作用。我还尝试了window.onpageshow
和window.onpagehide
,它们似乎也没有在正确的时间启动。我有一个测试HTML文件:
<html>
<head>
<script language="javascript">
console.log('Hello');
window.onblur = function(e) { console.log('blur'); };
window.onfocus = function(e) { console.log('focus'); };
window.onpagehide = function(e) { console.log('pagehide'); };
window.onpageshow = function(e) { console.log('pageshow'); };
</script>
</head>
<body>
<a href="http://www.google.com" target="_blank">Click Me</a>
</body>
</html>
log('Hello');
window.onblur=函数(e){console.log('blur');};
window.onfocus=函数(e){console.log('focus');};
window.onpagehide=函数(e){console.log('pagehide');};
window.onpageshow=函数(e){console.log('pageshow');};
理论上,当您单击“单击我”时,当新窗口出现时,您应该会得到一个模糊事件。但这不会发生在移动Safari上onpagehide
和onpageshow
也不显示爱,它们只在您即将关闭选项卡时帮助检测
我怎样才能在Mobile Safari中获得我想要的行为?有可能吗?iOS 5暂停JS在“无活动”选项卡中。 也许这个话题可以帮助你
我认为无法检测到
onblur
,但这是检测onfocus
的代码:
var timestamp=new Date().getTime();
function checkResume()
{
var current=new Date().getTime();
if(current-timestamp>5000)
{
var event=document.createEvent("Events");
event.initEvent("focus",true,true);
document.dispatchEvent(event);
}
timestamp=current;
}
window.setInterval(checkResume,50);
然后你就写:
document.addEventListener("focus",function()
{
alert("Focus detected");
},false);
试试这个:
这是一个可视的API polyfill。应该这样做。最近有人问了同样的问题,所以我将把这个答案与我以前的答案链接起来 Mageek的方法与我正在做的非常相似,但也会在滚动事件或键盘可见时触发。防止滚动时的行为并不是非常具有挑战性,但我从未抽出时间查看屏幕上的键盘事件
“我的对象”还利用requestAnimationFrame,并将使用focus hack作为备用,在可用的情况下选择使用可见性API(理想情况下,使其成为未来的证明)。谢谢,这看起来就像是一张罚单!实际上,根据克里斯·基尔的评论,这在移动Safari中可能不起作用。我现在没有带我的iPad——如果他说的是真的,那么移动Safari有什么解决办法吗?这只会在你回到账单上时告诉你,对吗?我想知道什么时候带有此代码的选项卡不再出现在屏幕上,并在重新打开选项卡之前知道它。