2010-08-15 59 views
3

在我的android手機(2.1)上,當手指按住觸摸屏一段時間時,出現setTimeout的奇怪行爲。setTimeout在android webkit中未被調用

這很簡單,其實代碼工作正常(1調用每一秒),直到我滾動了一段時間的窗口(2-3秒就足夠了),當它停止被稱爲

$(document).ready(function(){ 
    spam(); 
}); 

function spam(){ 
    console.log("cia") 
    setTimeout(spam, 1000); 
} 
+3

有趣的觀察。這個問題具體是什麼?你在尋找解釋嗎?解決方法? – 2010-08-15 18:58:19

回答

3

我有一樣的問題。

解決方案是爲我定義被調用函數作爲變量,而不是將ist作爲參數傳遞給setTimeout。

試試這個:

var spam = function(){ 
    console.log("cia") 
    setTimeout(spam, 1000); 
} 

$(document).ready(function(){ 
    spam(); 
}); 
+0

將它設置在一個變量中使它適合我,謝謝! – 2016-10-31 23:34:47

0

對我來說Varriotts答案沒有工作......我能得到的setTimeout Android手機我用於測試的工作(運行v 2.something)是唯一的出路以下符號:

function foo() {} 
window.setTimeout(foo, 200); 

這看起來奇怪,傳遞函數只是名字,而是試圖圍繞小時後,那只是它的工作方式。

1

以前我曾經在設備上做過這個問題,但是這些解決方案都沒有爲我工作。

從閱讀中,我做了相當充分的文件證明,這確實發生,但似乎沒有一致的解決方法。

對我來說有效的是關閉了窗口,讓我的測試網站停機,清除緩存,退出瀏覽器,然後打開任務管理器並關閉進程。當我再次打開瀏覽器並前往我的測試站點時,我原來的標準代碼再次開始工作。我唯一的猜測是瀏覽器本身進入一些奇怪的狀態,它不能運行標準的內置瀏覽器功能(既沒有setTimeout()也沒有setInterval()爲我工作,但兩個javascript函數都存在)。

我正在測試一個運行Android 2.1的三星Galaxy S,我不知道這是否會幫助其他人,但這對我來說很有用。

+0

這確實有助於:) – krzychukula 2012-04-18 13:44:19

1

試試這個

function spam(){ 
     console.log("cia") 
     setTimeout("spam()", 1000); 
    } 

的setTimeout:

/** 
    @param {String|Function} vCode 
    @param {Number} iMillis 
    @return Number 
    */ 
    window.setTimeout = function(vCode,iMillis) {}; 
0

我嘗試這樣做,它解決了我的問題。

setTimout(function(){aFunction(text);}, 200); 
相關問題