如何在Firefox插件中添加定期计时器?

时间:2011-03-09 15:29:53

标签: javascript firefox gecko

我正在尝试使用新的插件构建器预览(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时,setTimeout被setInterval替换.setTimeout函数在我构建的类似网页中运行得很好。我只是让函数调用本身给出一个无限循环(听起来很愚蠢,应该有一段时间)循环,但它是在教程;) 但现在我无法在我的插件中超越该错误。

另外,如果你可以帮助我解析这个插件中的本地或远程页面(最好是远程,但我可以让它解析在localhost上创建一个django创建的页面),或者甚至更好,只需告诉我如何使用python ;)那将是伟大的。

谢谢!

3 个答案:

答案 0 :(得分:9)

请注意,以上内容已弃用

var tmr = require('sdk/timers');
现在使用

代替

答案 1 :(得分:5)

使用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

答案 2 :(得分:2)

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

它并不要求您使用不必要的Jetpack SDK和额外的require功能;您可以像使用Mozilla插件中的其他XPCOM交互一样使用Components.classes