我想打开一个弹出窗口,等待X秒,然后关闭弹出窗口。如何在不使用setTimeout的情况下睡在Firefox扩展中?
(使用情况发送通知web应用程序 - 但我们不能只是做一个GET请求,因为它需要在同一个会议,所以我们可以使用的登录会话)
我可以” t使用setTimeout
,因为我们不能在附加组件/扩展中使用它
如何在不诉诸咀嚼CPU周期的情况下获得类似的功能,这显然会导致明显的滞后?
我想打开一个弹出窗口,等待X秒,然后关闭弹出窗口。如何在不使用setTimeout的情况下睡在Firefox扩展中?
(使用情况发送通知web应用程序 - 但我们不能只是做一个GET请求,因为它需要在同一个会议,所以我们可以使用的登录会话)
我可以” t使用setTimeout
,因为我们不能在附加组件/扩展中使用它
如何在不诉诸咀嚼CPU周期的情况下获得类似的功能,这显然会导致明显的滞后?
您可以使用nsITimer。
一个基本的例子如下,但你可以在https://developer.mozilla.org/en-US/docs/XPCOM_Interface_Reference/nsITimer
// we need an nsITimerCallback compatible interface for the callbacks.
var event = {
notify: function(timer) {
alert("Fire!");
}
}
// Create the timer...
var timer = Components.classes["@mozilla.org/timer;1"]
.createInstance(Components.interfaces.nsITimer);
// initialize it to call event.notify() once after exactly ten seconds.
timer.initWithCallback(event,10000, Components.interfaces.nsITimer.TYPE_ONE_SHOT);
您可以使用找到相关的文档页面的详细信息(包括使用Components.interfaces.nsITimer.TYPE_REPEATING_SLACK作为替代对setInterval)通过SDK,而不是nsITimer
对于同类的setTimeout/setInterval的功能在浏览器中
let { setTimeout } = require('sdk/timers');
function openPopup() {}
setTimeout(openPopup, 3000);
绝对是自Firefox 29以来的首选。 –
提供我发现这最终反正提供的timers模块 - 出色的作品 - THA nks为您的答案:) –
由于Firefox 29 sdk /定时器模块提供CommonJS API – teknopaul
对于Firefox 22 +,您可以使用更简单的Timer.jsm。它与附加SDK方法类似,但适用于非SDK插件和较旧的浏览器版本。 https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/Timer.jsm – Luckyrat