pagehide和pageshow事件在ios chrome上无法正常工作

ami*_*ena 9 javascript google-chrome dom-events ios

Apple文档列出了可用的iOS浏览器事件:https: //developer.apple.com/library/safari/documentation/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html

'pagehide'和'pageshow'事件似乎在safari上工作正常,但在chrome上它只适用于页面加载和卸载.它不起作用:

1)按主页按钮,即将chrome发送到后台

2)切换标签

下面是一个小的javascript代码段,您可以使用它来验证它:

<script type="text/javascript">
        window.addEventListener("pageshow", function(evt){
            alert('show');
        }, false);
        window.addEventListener("pagehide", function(evt){
            alert('hide');
        }, false);
</script>
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能检测铬是否被发送到背景.我需要在chrome返回前台后立即清除setTimeout计时器.任何解决方法?

ami*_*ena 6

以下是工作代码:

<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);
Run Code Online (Sandbox Code Playgroud)

您可以在此处找到更多详细信息:http://aawaara.com/post/74543339755/smallest-piece-of-code-thats-going-to-change-the-world