在我的Android手机(2.1)上,当手指按住触摸屏一段时间后,我看到了setTimeout的奇怪行为。
这个非常简单的代码实际上工作正常(每秒1次调用),直到我滚动窗口一段时间(2-3秒就足够了),当它停止被调用时
$(document).ready(function(){
spam();
});
function spam(){
console.log("cia")
setTimeout(spam, 1000);
}
答案 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);