我想知道如何在iOS 7移动Safari中获取相当于$(window).blur
事件。我希望这可以用于检测选项卡何时不再在屏幕上。这已被问几次(Detect moving to a new tab in Mobile Safari),但是,所有的答案或者不再起作用,或者只给出$(window).focus
事件,而不是$(window).blur
事件。另外,关于safari会关闭$(window).blur
吗?如何检测移动到移动Safari中的新选项卡
回答
每这篇文章:http://www.mobilexweb.com/blog/safari-ios7-html5-problems-apis-review
页能见度API的-webkit前缀在iOS 7,检测时,我们的标签去前台和后台。 XMLHttpRequest 2.0规范完全兼容意味着现在我们可以请求'blob'作为响应。视频轨道API已经很快覆盖,它允许我们查询和浏览任何媒体元素上的所有轨道和内容。
实现其基本演示的相关代码如下所示;希望你能适应它以适应你的要求。这是一个很好的例子,因为它不仅告诉你如何捕捉状态变化,但它也显示了如何将visibilityChanged
事件过程中请求数据:
var eventName = "visibilitychange";
if (document.webkitHidden != undefined) {
eventName = "webkitvisibilitychange";
document.write("<h2>webkit prefix detected</h2>");
} else if (document.mozHidden != undefined) {
eventName = "mozvisibilitychange";
document.write("<h2>moz prefix detected</h2>");
} else if (document.msHidden != undefined) {
eventName = "msvisibilitychange";
document.write("<h2>MS prefix detected</h2>");
} else if (document.hidden != undefined) {
document.write("<h2>standard API detected</h2>");
} else {
document.write("<h2>API not available</h2>");
}
function visibilityChanged() {
var h4 = document.getElementsByTagName("h4")[0];
if (document.hidden || document.mozHidden || document.msHidden || document.webkitHidden) {
h4.innerHTML += "<br>Hidden at " + Date().toString();
var ajax = new XMLHttpRequest();
ajax.open("GET", "sleep.php?" + Math.random(), true);
ajax.onreadystatechange = function() {
if (ajax.status == 200 && ajax.readyState == 4) {
h4.innerHTML += "<br>AJAX Async at " + Date().toString();
}
}
ajax.send(null);
var ajaxs = new XMLHttpRequest();
ajax.open("GET", "sleep.php?" + Math.random(), false);
ajax.send(null);
h4.innerHTML += "<br>AJAX Sync at " + Date().toString();
setTimeout(function() {
h4.innerHTML += "<br>Timer at " + Date().toString();
}, 3000);
} else {
h4.innerHTML += "<br>Shown at " + Date().toString();
}
}
document.addEventListener(eventName, visibilityChanged, false);
window.onpageshow = function() {
h4.innerHTML = "<br>Page show at " + Date().toString();
};
window.onpagehide = function() {
h4.innerHTML = "<br>Page hide at " + Date().toString();
};
如果你想测试一下你的设备上,这里是现场演示:http://mobilexweb.com/ts/api/page.html
当标签丢失并重新获得焦点时,您会看到日志写入页面。
看起来像这样会适合我!谢谢! (由于SO的时间限制,赏金将在3小时内颁发) –
当然可以!别担心。我遇到了一段时间后背自己,这是一场斗争,然后发现那篇文章。 – brandonscript
- 1. 如何检测移动设备移动?
- 2. Titanim移动选项卡组
- 3. 移动到其他选项卡
- 4. 如何移动到ASP.NET中特定的选项卡视图?
- 5. 如何检测移动Safari全球定位旋转动画
- 6. 如何检测ios 7中的移动Safari浏览器?
- 7. 如何移动选定的项目移动到列表
- 8. Safari将TD移动到移动的新行
- 9. 如何在移动Safari HTML文档中触发地址检测?
- 10. WKWebview未检测到移动
- 11. 如何检测移动Safari添加的tel:链接?
- 12. 如何检测移动Safari何时关闭?
- 13. 如何从移动版Safari
- 14. bootstrap选项卡作为移动设备的选项卡
- 15. 移动到该选项卡中的选项卡和特定位置
- 16. c#移动到选项卡控件中的下一个选项卡
- 17. Sitecore移动检测
- 18. PHP移动检测
- 19. 打开新选项卡而不移动到它
- 20. 当我移动到另一个选项卡时,如何在android
- 21. 在移动Safari
- 22. 在移动Safari
- 23. 移动到SD卡
- 24. 移动到SD卡
- 25. 移动到SD卡
- 26. 为组合框选择一个选项后要移动到新选项卡
- 27. 选项卡指示器在滑动时不移动,但在选择时移动
- 28. 在移动Safari中的多个选择
- 29. Flex移动选项卡不工作
- 30. 在窗体上移动自定义选项卡/子选项卡
[这是了解更多关于focusin/focusout和blur事件的好页面。](http://www.quirksmode.org/dom/events/blurfocus.html)< - 点击链接! – Mike
[这是另一个很好的页面](http://output.jsbin.com/rinece),用于查看发生了什么事件。不同的事件发生在不同的浏览器/版本/操作系统/ UIWebView。 – robocat