【发布时间】:2017-04-27 22:49:03
【问题描述】:
我有两个脚本。每个都在我们公司的不同子域上运行"Example.com".
Script #1 -- house.example.com
Script #2 -- bob.fred.example.com
同一个域,不同的子域。
当house.example.com 上出现特定元素时,我需要向bob.fred.example.com 上运行的脚本发送一条消息
由于 Google 扩展程序可以在扩展程序之间交换消息,因此 TamperMonkey 必须有一种方法可以在同一扩展程序内、脚本之间交换消息 - 特别是如果它们在同一个二级域上运行。
谁能指出我正确的方向?一两个例子就值金子了。
更新:虽然 Gothdo 引用了 Javascript communication between browser tabs/windows 作为对这个问题的回答,但他没有考虑到所涉及的跨域策略。 该引用问题中的任何答案都没有为跨域浏览器标签通信提供明确的答案,这是这个问题的重点。我现在已经研究并解决了这个问题问题,从许多 SO 和非 SO 来源获得想法。如果这个问题被重新打开,我会发布我的解决方案。
【问题讨论】:
-
这对我来说不是重复的。 OP 询问 TamperMonkey 中的消息传递,类似于 Chrome extensions' messaging。
-
@nicovank 在 Tampermonkey 中也是如此。 Tampermonkey 脚本没有 Chrome 扩展这样的权限;它们与常规脚本非常相似。
-
@Gothdo 不过,我认为合适的做法是提供一个答案,说没有这样的 API,但是可以使用常规的网络消息传递,并提供一个链接。这不是重复的,即使答案是相似的。 -- 特别是因为如果脚本在同一页面上运行,还可以通过演示如何使用
GM_setValue来增强答案。 -
@gibberish 这个论坛帖子展示了如何使用 GM_setValue 和 GM_getValue 在选项卡之间发送消息以实现选项卡级锁定。 forum.tampermonkey.net/viewtopic.php?f=21&t=1000#p3655
-
@Gothdo,你上面的断言是错误的; Tampermonkey 脚本可以做一些常规脚本做不到的事情,并且该副本不适用于 OP 的场景。虽然这个问题可能是一些 Greasemonkey 问题的重复(该主题肯定已经在 GM/TM 场景中涵盖),但我目前没有时间搜索更多...
标签: javascript jquery greasemonkey tampermonkey