可以修改加载共享Web工作者中的工作者的机制吗?

时间:2016-08-14 00:07:07

标签: javascript userscripts

请参阅此相关问题以获取此背景信息:

How can I load a shared web worker with a user-script?

考虑到这个问题,我想探索修改Shared Worker构造函数的可能性(在用户脚本的上下文中),以便负责加载Web worker的机制被替换为GM函数{{3} },与GM_xmlhttpRequest类似,同时忽略相同的原始策略。

为了清楚起见,我正在编写Stack Overflow的用户脚本,以帮助自己和其他人自动执行某个过程,我需要在两个开放的SO标签之间进行通信,这可以通过共享Web很好地完成工人,但是如果你看一下我引用的相关问题,那就有问题了。

是否可以修改加载共享Web工作者中的工作者的机制?它是否使用了网页的原生XMLHttpRequest,还是我们无法触及的内部功能?如果可以修改,我该如何访问它才能执行修改?

1 个答案:

答案 0 :(得分:-1)

  

你想用SharedWorker做什么?

     

在不必使用同一域的页面之间传递消息   设置一个恒定的间隔来检查本地存储变量是否有   改变。

您可以使用storage事件在同一来源的标签之间传递消息

index.html

<!DOCTYPE html>
<html>

  <head>
  </head>

  <body>
    <a href="b.html" target="_blank">open b.html</a>
    <textarea></textarea>
    <button>click</button>
    <script>
      var messages = [];
      var button = document.querySelector("button");
      var textarea = document.querySelector("textarea");
      window.addEventListener("storage", function(e) {
        console.log(e.newValue, JSON.parse(localStorage.getItem("messages")));

      });
      button.addEventListener("click", function() {
        messages.push(textarea.value);
        localStorage.setItem("messages", JSON.stringify(messages));
        localStorage.setItem("message", textarea.value);
        textarea.value = "";
      })
    </script>
    </body>
</html>

b.html

<!DOCTYPE html>
<html>

  <head>
  </head>

  <body>
    <textarea></textarea>
    <button>click</button>

    <script>
    var messages = JSON.parse(localStorage.getItem("messages"));
      window.addEventListener("storage", function(e) {
        console.log(e.newValue, JSON.parse(localStorage.getItem("messages")));
      });
      var button = document.querySelector("button");
      var textarea = document.querySelector("textarea");
      button.addEventListener("click", function() {
        messages.push(textarea.value);
        localStorage.setItem("message", textarea.value);
        localStorage.setItem("messages", JSON.stringify(messages));
        textarea.value = "";
      })
    </script>
    </body>
</html>

plnkr http://plnkr.co/edit/4nR7Rpu4zXSgTR831vQW?p=preview