2010-08-15 68 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);