获取2个用户脚本互相交流?

5 greasemonkey interaction userscripts tampermonkey

我有两个脚本.我把它们放在同一个命名空间(@namespace字段)中.

我希望他们与另一个人互动.

具体来说,我想脚本一个设置RunByDefault为123有无脚本B检查,如果RunByDefault==123还是没有,然后有一个脚本使用超时或任何调用函数中的脚本B.

我该怎么做呢?我讨厌合并脚本.

Bro*_*ams 7

脚本不能直接相互交互,// @namespace只是为了解决脚本名称冲突.(也就是说,只有当它们具有不同的命名空间时,您才能拥有两个名为"Link Remover"的不同脚本.)

单独的脚本可以使用以下方式交换信

  • Cookie - 仅适用于同一域名
  • localStorage - 仅适用于同域
  • 通过AJAX向您控制的服务器发送和接收值 - 跨域工作.

而已.

同一脚本的不同运行实例可以使用GM_setValue()和交换信息GM_getValue().该技术具有对目标网页是跨域,易于和不可见的优点.

请参阅Tampermonkey中此交叉表通信的工作示例.


在Chrome和Chrome上,您可以使用非标准FileSystem API将数据存储在本地文件中.但这可能需要用户点击每笔交易 - 如果它完全有效.

另一个选择是编写扩展(附加组件)以充当帮助程序并执行文件IO.你postMessage通常会通过它与它互动.

在实践中,我从未遇到过这样的情况,即合并任何真正需要共享数据的脚本并不简单和清晰.


此外,脚本不能共享代码,但是它们可以将JS注入目标页面并同时访问它.

最后,AFAICT,脚本总是按顺序运行,而不是并行运行.但您可以从" 管理用户脚本"面板控制执行顺序