gpt4 book ai didi

javascript - Firefox扩展js对象初始化

转载 作者:行者123 更新时间:2023-11-28 02:55:27 24 4
gpt4 key购买 nike

注意:这是关于 Firefox 扩展的问题,而不是 js 一般问题。

在 Firefox 扩展项目中,我需要每个 Firefox 窗口只初始化一次 javascript 对象。否则,每次我打开窗口时,都会启用新的计时器,使用新的属性,因此一切都将从头开始。

希望下面的例子能够揭开我的问题的神秘面纱:)

var StupidExtension
{
statusBarValue: "Not Initialized Yet",
startup: function ()
{
...
// Show statusBarValue in Status Bar Panel
},
initTimerToRetrieveStatusBarValueFromNetwork: function ()
{
...
}
}

因此,每次按 Ctrl+N 打开新窗口时,您都会看到“尚未初始化”,然后将触发新计时器,因此一段时间后,它从网络检索数据,您也会在第二个窗口上看到值,依此类推。理想情况下,只运行一个计时器函数并更新所有 Firefox 窗口中的所有状态栏面板。

当然,我可以做一些缓存,例如将值保存在首选项或其他存储中,然后从那里显示它。但我觉得这是人为的。

所以问题是,是否存在使所有 Firefox 窗口实例中对象的某些部分静态化的“ native ”技术?

最佳答案

https://developer.mozilla.org/en/Working_with_windows_in_chrome_code#Advanced_data_sharing

在所有窗口中导入一个 js 模块(您需要编写该模块)。这为您提供了一个在所有这些对象之间共享的对象。

在模块中实现计时器代码并使用标准 observer service向所有窗口发送通知(每当窗口需要更新时,计时器回调就会调用 .notify(),每个窗口都有一个使用 .addObserver() 注册的观察者)或者在从 jsm 导出的对象上实现您自己的 addObserver/removeObserver 方法。

关于javascript - Firefox扩展js对象初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2785324/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com