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
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