gpt4 book ai didi

javascript - 内容脚本中的 Firefox SDK 访问首选项

转载 作者:数据小太阳 更新时间:2023-10-29 04:46:07 29 4
gpt4 key购买 nike

关于

我正在使用 Firefox 附加组件 SDK 开发 Firefox 附加组件。该附加组件将针对特定站点,并且会根据用户偏好隐藏某些元素。

几年前我已经制作了这个附加组件,但使用新的 SDK 时,事情会有所不同。


代码

因为附加组件是特定于站点的,所以我需要修改站点的内容,所以我使用了“PageMod”模块

[main.js]

pageMod.PageMod({
include: "*.ipvisie.com",
contentScriptFile: [
data.url('jquery-1.11.1.min.js'),
data.url('script.js')
]
});

效果很好,jQuery 已实现,我可以从 script.js 添加和运行 javascript

我已经在“package.json”中声明了首选项并且效果很好。我可以从“main.js

访问它


问题

我的问题是 ContentScript 无法访问用户首选项。

如何访问我的 ContentScript“script.js”中的当前首选项?


尝试过的尝试

尝试 1
我尝试的第一件事就是请求 ContentScript 的偏好

if (require('sdk/simple-prefs').prefs['somePreference'] == true) {
alert('Pref checked');
}



尝试 2
我在文档中读到一些只读参数可以与 ContentScript 一起发送。这似乎可行,但是当我更改我的偏好时,值已经设置好了。只有当我重新启动浏览器时,正确的设置才会通过。

contentScriptOptions: {
advertLink: require('sdk/simple-prefs').prefs['advertTop'],
advertDay: require('sdk/simple-prefs').prefs['advertDay'],
advertAdmart: require('sdk/simple-prefs').prefs['advertAdmart'],
advertLink: require('sdk/simple-prefs').prefs['advertLink']
}

最佳答案

您应该在每次首选项更改时将新首选项发送到内容脚本,而不仅仅是在脚本初始化时。

您可以通过消息与内容脚本通信:Communicating With Content Scripts
创建一个接收更改的首选项名称和值的函数以及一个 preference change listener将更改发送到脚本:

pageMod.PageMod({
// ...
onAttach: function(worker) {
worker.port.on("prefChange", function(prefName, prefValue) {
// update page ...
});

function onPrefChange(prefName) {
self.port.emit("prefChange", prefName, require("sdk/simple-prefs").prefs[prefName]);
}
require("sdk/simple-prefs").on("", onPrefChange);
}
});

关于javascript - 内容脚本中的 Firefox SDK 访问首选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25079769/

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