【问题标题】:setTimeout not called in android webkit在 android webkit 中未调用 setTimeout
【发布时间】:2010-08-15 18:55:33
【问题描述】:

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

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

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

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

【问题讨论】:

  • 有趣的观察。但具体是什么问题?你在寻找解释吗?解决方法?

标签: javascript android


【解决方案1】:

我也有同样的问题。

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

试试这个:

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

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

【讨论】:

  • 将它设置在一个变量中使它对我有用,谢谢!
【解决方案2】:

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

从我所做的阅读中可以看出,确实会发生这种情况,但似乎并没有一致的解决方法。

对我有用的是关闭我的测试站点的窗口,清除缓存,退出浏览器,然后打开任务管理器并关闭进程。当我再次打开浏览器并转到我的测试站点时,我原来的标准代码又开始工作了。

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

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

【讨论】:

    【解决方案3】:

    试试这个

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

    设置超时:

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

    【讨论】:

      【解决方案4】:

      对我来说 Varriotts 的回答不起作用......我可以让 setTimeout 在我用于测试(运行 v 2.something)的 Android 手机上工作的唯一方法是使用以下符号:

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

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

      【讨论】:

        【解决方案5】:

        我试过了,它解决了我的问题。

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-03-16
          • 1970-01-01
          • 2012-05-27
          • 1970-01-01
          • 2015-02-15
          • 1970-01-01
          • 1970-01-01
          • 2015-03-05
          相关资源
          最近更新 更多