Как я могу добавить повторяющийся таймер в аддон Firefox? - PullRequest
4 голосов
/ 09 марта 2011

Я пытаюсь создать аддон с новым предварительным просмотром компоновщика аддонов (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 прекрасно работала на похожей веб-странице, которую я построил. У меня был только сам вызов функции, чтобы создать бесконечный цикл (звучит глупо,должен быть цикл while, но он был в учебнике;) Но теперь я не могу обойти эту ошибку в моем аддоне.

Кроме того, если вы можете помочь мне разобрать локальную или удаленную страницу в этомаддон (желательно удаленный, но я мог бы вместо этого разобрать созданную django страницу на localhost), или даже лучше, просто скажите мне, как использовать python;) это было бы здорово.

Спасибо!

Ответы [ 3 ]

9 голосов
/ 30 января 2014

обратите внимание, что вышеуказанное устарело

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

теперь используется вместо

5 голосов
/ 09 марта 2011

Использовать модуль таймера :

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 голосов
/ 05 апреля 2014

Использование nsITimer: https://developer.mozilla.org/en-US/docs/XPCOM_Interface_Reference/nsITimer

Не требует использования ненужного Jetpack SDK и дополнительной функции require; вы можете использовать Components.classes, как и для других взаимодействий XPCOM в аддонах Mozilla.

...