簡體   English   中英

setInterval在iPhone上不起作用

[英]setInterval doesn't work on iPhone

據報道,打開軟鍵盤時setInterval會暫停。 (與Android上的錯誤相同)

http://code.google.com/p/android/issues/detail?id=13540 http://www.barneyb.com/barneyblog/2011/02/20/settimeout-bug-in-android-2-2 /

任何解決方法? 我正在一個網站上使用Ajax Load使用setInterval每隔x秒刷新一次內容。 它適用於所有PC瀏覽器,但不適用於iPhone / Android。

我知道這不是理想的解決方案,但是您可以使用HTML5輔助程序代替setInterval(盡管我也不知道它們是否也在后台暫停了-我假設它們不是在后台暫停,如果他們是)?

對於不兼容HTML5的PC瀏覽器,確實增加了許多向后兼容的問題:(

http://www.sitepoint.com/javascript-threading-html5-web-workers/

可能的解決方法是使用比您希望的X秒刷新時間更短的間隔,但是僅在經過適當的時間后才實際觸發回調。 當然更多的是麻煩,但也不是那么復雜。

編輯:一些示例代碼

var setiPhoneInterval = function(callback, delay){
    var checkInterval = delay / 10; // break down original delay into 10 sub-intervals for checking
    var lastFired = new Date();

    var fire = function(){
        var now = new Date();
        if(now.getTime() - lastFired.getTime() > delay ){
            lastFired = new Date();
            callback();
        }
    };

    var interval = setInterval(fire, checkInterval);
    return interval;
};

var myCallback = function(){
    console.log('fired!');
};

var foo = setiPhoneInterval(myCallback, 10000);

// and, you can still clearInterval if you'd like
// clearInterval(foo);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM