修改交叉表通信的GM_setValue和GM_getValue:如何访问 Firefox 首选项变量

Modify GM_setValue and GM_getValue for cross-tab communication : How to access Firefox Preferences variables?

本文关键字:GM 访问 变量 Firefox 何访问 首选项 通信 交叉表 setValue 修改 getValue      更新时间:2023-09-26

>我有一个与我的 GM 用户脚本相关的新问题。

此脚本的目的是从外部域检索数据。我在 Firefox 上的第一次尝试促使我设计了一个页面,其中我的表单要填充,iframe 嵌入外部页面。通过使用 setInterval 并确定它是顶部窗口还是我们在 iframe 中,我成功地使用 GM_setValue 和 GM_getValue 来获取数据。

但是使用IE(IE7PRO),我发现我能够将我的脚本分成两个脚本:一个只处理表单,另一个处理外部域。IE7PRO提供了等效的功能(PRO_getValue和PRO_setValue),可以在产品的任何选项卡/页面上检索。唯一的区别是它可以跨表/页面工作,所以我不必在我自己的页面上包含 iframe,我可以为外部域打开它自己的选项卡,这大约是一百万倍(至少......

我在Firefox上尝试了相同的方法,但显然不起作用。我已经浏览了这些功能的文档,似乎在Firefox中,数据存储在首选项(about:config to access)中。

那么,有没有办法修改GM_getValue,添加参数,因为值与此模型一起存储: greasemonkey.scriptvals.namespace/script_name.value_name

有没有办法在Firefox,Greasemonkey用户脚本/Javascript中访问首选项的值,语法是什么?

谢谢 ;-)

如果我理解你的问题是正确的,你几乎会做你在IE中已经做的事情:在每个选项卡中运行一个用户脚本。

GM_[gs]etValue表和跨页工作。值按用户脚本存储。

因此,您需要做的就是在两个选项卡中运行相同的用户脚本,然后简单地让它根据检查来执行不同的操作window.location.href

目前,唯一的方法是制作一个在两个页面上运行的脚本.
您可以通过添加 if 语句来区分它们,如之前由 Wimmel.
所述但是,您可以考虑使用 unsafeWindow 在全局范围内添加数据,并将代码分成 2 个脚本,但两个脚本的执行顺序会影响结果。