修改 GM_setValue 和 GM_getValue 以进行跨表通信:如何访问 Firefox 首选项变量?

发布于 2024-11-08 05:40:02 字数 755 浏览 0 评论 0原文

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

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

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

我在 Firefox 上尝试了同样的方法,但显然不起作用。我已经浏览了这些函数的文档,看来在 Firefox 中,数据存储在首选项中(关于:配置访问)。

那么,有没有办法我可以修改 GM_getValue,添加它的参数,因为值是用这个模型存储的:greasemonkey.scriptvals.namespace/script_name.value_name

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

谢谢 ;-)

I have a new problem related to my GM user script.

The purpose of this script is to retrieve data from external domain. My first attempts on Firefox lead me to design a page, with my form to be filled and an iframe embedding the external page. By using setInterval and identify wether it's the top window or if we are in the iframe, I successfully used GM_setValue and GM_getValue to get the data.

But with IE (IE7PRO), I found out I was able to separate my script into 2 scripts : one only dealing with the form, and the other dealing with the external domain. IE7PRO provides equivalent functions (PRO_getValue and PRO_setValue) that can be retrieved on any tab/page of the product. The only difference is that it works cross-tab/page, so I don't have to include the iframe on my own page, and I can open its own tab for the external domain which is about a million times better (at least...)!

I tried the same on Firefox and it obviously didn't work. I've been through the documentation of those functions, and it appears that in Firefox, data are stored in Preferences (about:config to access).

So, is there a way I can modify GM_getValue, add it parameters, because values are stored with this model : greasemonkey.scriptvals.namespace/script_name.value_name

Is there a way to access the value of a preference in Firefox, in a Greasemonkey user script/in Javascript and what is the syntax?

Thanks ;-)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

ヤ经典坏疍 2024-11-15 05:40:02

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

GM_[gs]etValue 跨选项卡和跨页面工作。值按每个用户脚本存储。

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

If I'm understanding your question right, you'd pretty much do the same thing you're already doing in IE: have a userscript running in each tab.

GM_[gs]etValue do work cross-tab and cross-page. Values are stored per userscript.

So all you need to do is have the same userscript run in both tabs, and simply have it do different things based on a check to window.location.href.

短叹 2024-11-15 05:40:02

目前,唯一的方法是制作一个在两个页面上运行的脚本。
您可以通过添加 Wimmel 之前提到的 if 语句来区分它们。

不过,您可以考虑使用 unsafeWindow 在全局范围内添加数据并将代码分成 2 个脚本,但这两个脚本的执行顺序会影响结果。

Currently, the only way is to make one script that runs on both pages.
You can differentiate them by adding an if-statement as mentioned before by Wimmel.

You may however consider adding your data in global scope using unsafeWindow and separating the code into 2 scripts, but order which both scripts are executed would affect the result.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文