【问题标题】:How can I add a recurring timer to a Firefox addon?如何将循环计时器添加到 Firefox 插件?
【发布时间】:2011-03-09 15:29:52
【问题描述】:

我正在尝试使用新的插件构建器预览 (https://builder.addons.mozilla.org/) 创建一个插件,并且我需要一个大约每 10 分钟运行一次的函数。我尝试了 setInterval 和 setTimeout,但它们都返回以下错误:

    error: An exception occurred.
Traceback (most recent call last):
  File "resource://jid0-31njasqk3btmpa6paroepuybjn4-myaddon-lib/main.js", line 41, in 
    setTimeout(function() { timedCount(); }, 10000);
ReferenceError: setTimeout is not defined

(当我尝试使用 setTimeout 时,它被替换为 setInterval。setTimeout 函数在我构建的类似网页中运行良好。我只是让函数调用本身来提供无限循环(听起来很愚蠢,应该有一段时间循环,但它在教程中;) 但是现在我无法克服插件中的那个错误。

另外,如果你能帮我解析这个插件中的本地或远程页面(最好是远程的,但我可以让它解析本地主机上的 django 创建的页面),或者更好,告诉我如何使用 python ;) 那太好了。

谢谢!

【问题讨论】:

  • 对于您的解析问题,请创建一个单独的问题。

标签: javascript firefox gecko


【解决方案1】:

请注意以上内容已弃用

var tmr = require('sdk/timers');

现在改为使用

【讨论】:

    【解决方案2】:

    使用timer module

    var tmr = require('timer');
    tmr.setInterval(timedCount, 10000); // no need for an anon function since you don't pass any arguments to your function nor capture anything in a closure
    

    【讨论】:

    • 谢谢!效果很好!不幸的是,我仍然无法在该功能中做很多事情:(
    【解决方案3】:

    使用nsITimerhttps://developer.mozilla.org/en-US/docs/XPCOM_Interface_Reference/nsITimer

    不需要你使用不必要的Jetpack SDK,以及额外的require函数;您可以使用Components.classes,就像在 Mozilla 插件中进行其他 XPCOM 交互一样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-23
      • 2021-09-18
      • 1970-01-01
      • 2019-03-29
      • 2020-12-09
      • 2020-09-06
      • 1970-01-01
      • 2017-06-21
      相关资源
      最近更新 更多