Apple 文档在此处列出了可用的 iOS 浏览器事件: https://developer.apple.com/library/archive/documentation/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html
“pagehide”和“pageshow”事件似乎在 safari 上运行良好,但在 chrome 上它仅适用于页面加载和卸载。它不适用于:
按下主页按钮,即将 Chrome 转到后台
切换标签页
下面是一个小的 Javascript 片段,您可以使用它来验证它:
<script type="text/javascript">
window.addEventListener("pageshow", function(evt){
alert('show');
}, false);
window.addEventListener("pagehide", function(evt){
alert('hide');
}, false);
</script>
我该怎么做才能检测 chrome 是否已发送到后台。我需要在 chrome 回到前台后立即清除 setTimeout 计时器。有什么解决方法吗?
最佳答案
下面是工作代码:
<script type="text/javascript">
var heartbeat;
var lastInterval;
function clearTimers() {
clearTimeout(heartbeat);
}
function getTime() {
return (new Date()).getTime();
}
function intervalHeartbeat() {
var now = getTime();
var diff = now - lastInterval - 200;
lastInterval = now;
if(diff > 1000) { // don't trigger on small stutters less than 1000ms
clearTimers();
}
}
lastInterval = getTime();
heartbeat = setInterval(intervalHeartbeat, 200);
您可以在此处找到更多详细信息:http://aawaara.com/post/74543339755/smallest-piece-of-code-thats-going-to-change-the-world
关于javascript - pagehide 和 pageshow 事件在 ios chrome 上无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21311478/