利用cookie实现浏览器中多个标签页之间的通信

Posted javascript9527

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用cookie实现浏览器中多个标签页之间的通信相关的知识,希望对你有一定的参考价值。

原理:

  cookie是浏览器端的存储容器,而且它是多页面共享的,利用cookie多页面共享的特性,可以实现多个标签页的通信。

  比如: 一个标签页发送消息(将发送的消息设置到cookie中),一个标签页接收消息(从cookie中获取消息)

 

例子:  

01  发送消息的标签页(其实就是将要发送的消息设置到cookie中

 

<!DOCTYPE html>
<html lang="en">
<head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <meta http-equiv="X-UA-Compatible" content="ie=edge">
      <title>Document</title>
</head>
<body>
                        <!-- 这个页面用来发送信息(设置cookie的值)  -->
      <input type="text" id=‘msg1‘><br>   <!--输入框  msg1 -->
      <input type="text" id=‘msg2‘><br>   <!--输入框  msg2 -->
      <button id="send">发送</button>     <!-- 点击发送按钮触发send事件 -->
      <script>
            send.onclick=function()
                  if(msg1.value.trim()!==‘‘ && msg2.value.trim()!==‘‘)  //如果msg1和msg2的内容不是空的,执行if语句
                        document.cookie=msg1=+msg1.value.trim();       // 将msg1和msg2的值放入cookie中(给cookie赋值)
                        document.cookie=msg2=+msg2.value.trim();       // cookie 格式   msg=value
                                                                        //因为cookie的值是多页面共享的,所以可以实现标签页的传值
            
            
      </script>
</body>
</html>

 

02  接收消息的标签页(其实就是从cookie中获取消息并显示在页面)

<!DOCTYPE html>
<html lang="en">
<head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <meta http-equiv="X-UA-Compatible" content="ie=edge">
      <title>Document</title>
</head>
<body>
                  <!-- 这个页面用来接收信息(获取cookie的值 ) -->
      <h1>收到消息:<span id="recMsg1" ></span></h1>
      <h1>收到消息:<span id="recMsg2" ></span></h1>
      <script>
           
                  // 获取cookie的方法   document.cookie
                  // 01 将cookie中的值   msg1=hellwo; msg2=word   转变为 json字符串 格式 "msg1":"hellwo","msg2":"word"

                  function getKey(key)
                        var obj="+document.cookie.replace(/=/g,":").replace(/;\s+/g,",")+"
                        var cookies=JSON.parse(obj) // 02 将json字符串转为 对象
                        return cookies[key]
                        
                  
                  setInterval(() => //加入定时器,让函数每一秒就调用一次,实现页面刷新
                        recMsg1.innerHTML=getKey("msg1")//将msg1的值设置到页面recMsg1处
                        recMsg2.innerHTML=getKey("msg2")//将msg2的值设置到页面recMsg2处
                  , 1000);
            
                  
                  

                  
            
      </script>

</body>
</html>

 

以上是关于利用cookie实现浏览器中多个标签页之间的通信的主要内容,如果未能解决你的问题,请参考以下文章

浅谈两种方法实现浏览器内多个标签页之间的通信

如何实现浏览器内多个标签页之间的通信?

实现多个页面之间进行通信

如何实现浏览器内多个标签页之间的通信?

两个浏览器窗口间通信总结

每日思考(2019/12/16)