在android webkit中没有调用setTimeout

时间:2010-08-15 18:55:33

标签: javascript android

在我的Android手机(2.1)上,当手指按住触摸屏一段时间后,我看到了setTimeout的奇怪行为。

这个非常简单的代码实际上工作正常(每秒1次调用),直到我滚动窗口一段时间(2-3秒就足够了),当它停止被调用时

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

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

5 个答案:

答案 0 :(得分:3)

我有同样的问题。

解决方案是我将被调用函数定义为变量,而不是将ist作为参数传递给setTimeout。

试试这个:

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

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

答案 1 :(得分:1)

我之前在设备上进行了一些开发时遇到过这个问题,但这些解决方案都不适用于我。

从阅读中我做到了相当充分的记录,这确实发生了,但似乎没有一致的解决方法。

对我来说有用的是关闭我测试站点的窗口,清除缓存,退出浏览器然后打开任务管理器并关闭进程。当我再次打开浏览器并访问我的测试站点时,我最初开始使用的标准代码。

我唯一的猜测是浏览器本身会进入一些奇怪的状态,它不会运行标准的内置浏览器功能(setTimeout()或setInterval()都不适用于我,但两个javascript函数都存在)。

我正在使用运行Android 2.1的三星Galaxy S进行测试,我不知道这是否会对其他人有所帮助,但这对我有用。

答案 2 :(得分:1)

试试这个

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

的setTimeout:

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

答案 3 :(得分:0)

对我来说,Varriotts的回答没有用...我用来测试(运行v 2.something)的Android手机上的setTimeout工作的唯一方法是用以下符号表示:

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

这看起来很奇怪,只传递一个函数的名称,但经过几个小时的尝试,它是唯一的工作方式。

答案 4 :(得分:0)

我尝试了这个,它解决了我的问题。

setTimout(function(){aFunction(text);}, 200);