【发布时间】:2016-12-20 15:40:07
【问题描述】:
请参阅此相关问题以了解其背景:
How can I load a shared web worker with a user-script?
考虑到这个问题,我想探索修改 Shared Worker 构造函数的可能性(在用户脚本的上下文中),以便将负责加载 Web Worker 的机制替换为 GM 函数GM_xmlhttpRequest,它的工作原理类似于XMLHttpRequest,但忽略了同源策略。
明确地说,我正在为 Stack Overflow 编写一个用户脚本,以帮助我自己和其他人自动执行某个流程,我需要在两个打开的 SO 选项卡之间进行通信,这可以通过 Shared Web Worker 很好地完成,但是,如果您查看我引用的相关问题,则存在问题。
Shared Web Workers中加载worker的机制可以修改吗?它是使用页面的原生XMLHttpRequest 还是我们无法触及的一些内部功能?如果可以修改,我如何访问它以执行修改?
【问题讨论】:
-
您也可以使用
storage事件在标签之间进行通信。没有尝试过用户脚本,但如果在同一来源,应该可以使用.createObjectURL()? -
@guest271314 哦!我的“B 计划”确实涉及使用本地或会话存储进行通信,但我打算做一些可耻的事情来完成它:以恒定的时间间隔检查变量更改 :( 谢谢,那好多了!
-
见stackoverflow.com/questions/38034647/…,stackoverflow.com/questions/38343802/…。如果两个标签位于同一来源,也可以使用
filesystem: -
你想用
SharedWorker达到什么目的? -
@guest271314 只是为了在来自同一域的页面之间传递消息,而无需设置恒定间隔来检查本地存储变量是否已更改。我没有意识到
storage事件到达了域的所有选项卡。考虑到在用户脚本中使用共享工作者的难度,这个选择要简单得多。但是我想有人可能需要在用户脚本中使用共享工作者,所以这个问题可能仍然有用。