Can the mechanism that loads the worker in Shared Web Workers be modified?

后端 未结 1 766
既然无缘
既然无缘 2020-12-02 01:10

Please see this related question for a background to this:

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

With that question in mind, I want to explo

相关标签:
1条回答
  • 2020-12-02 02:03

    What are you trying to achieve using SharedWorker?

    to pass messages between pages from the same domain without having to set a constant interval to check if a local storage variable had changed.

    You can use storage event to communicate messages between tabs at same origin

    At 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

    0 讨论(0)
提交回复
热议问题