在一个标签页里面使用 localStorage.setItem(key,value)添加(修改、删除)内容; 在另一个标签页里面监听 storage 事件。 即可得到 localstorge 存储的值,实现不同标签页之间的通信。
标签页1:
<input id="name"> <input type="button" id="btn" value="提交"> <script src="https://code.jquery.com/jquery-3.3.1.js"></script> <script type="text/javascript"> $(function(){ $("#btn").click(function(){ var name=$("#name").val(); localStorage.setItem("name", name); console.log("localStorage: name="+name); }); }); </script>标签页2:
<script src="https://code.jquery.com/jquery-3.3.1.js"></script> <script type="text/javascript"> $(function(){ window.addEventListener("storage", function(event){ console.log(event.key + "=" + event.newValue); }); }); </script>将要传递的信息存储在cookie中,每隔一定时间读取cookie信息,即可随时获取要传递的信息。
页面1:
<input id="name"> <input type="button" id="btn" value="提交"> <script src="https://code.jquery.com/jquery-3.3.1.js"></script> <script type="text/javascript"> $(function(){ $("#btn").click(function(){ var name=$("#name").val(); document.cookie="name="+name; console.log("cookie: name="+name); }); }); </script>页面2:
<script src="https://code.jquery.com/jquery-3.3.1.js"></script> <script type="text/javascript"> $(function(){ function getCookie(key) { return JSON.parse("{\"" + document.cookie.replace(/;\s+/gim,"\",\"").replace(/=/gim, "\":\"") + "\"}")[key]; } setInterval(function(){ console.log("name=" + getCookie("name")); }, 3000); }); </script>
无论何时,Storage 对象发生变化时(即创建/更新/删除数据项时,重复设置相同的键值不会触发该事件),StorageEvent事件会触发,与发生改变的窗口同源的每个窗口的window对象上都会触发Web Storage事件。 监听同源窗口的Storage事件:window.addEventListener("storage", displayStorageEvent)
