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

原文地址:https://www.cnblogs.com/javascript9527/p/javascript9527.html

时间: 2024-10-12 03:08:51

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

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

调用localstorge.cookies等本地存储方式. 方法一: localstorge在一个标签页里被添加.修改或删除时,都会触发一个storage事件,通过在另一个标签页里监听storage事件,即可得到localstorge存储的值,实现不同标签页之间的通信. <input id="name"> <input type="button" id="btn" value="提交"> <scr

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

调用 localstorge.cookies 等本地存储方式 方法一:使用localStorage 使用localStorage.setItem(key,value);添加内容 使用storage事件监听添加.修改.删除的动作 window.addEventListener("storage",function(event){      $("#name").val(event.key+"="+event.newValue); }); 方法二.使

(转)如何实现同一浏览器多个标签页之间的通信(二)——cookie+setInterval

二.cookie (1)cookie是什么? HTTP Cookie,通常直接叫做cookie,最初是在客户端用于存储回话信息的.该标准要求服务器对任意HTTP请求发送Set-Cookie HTTP头作为响应的一部分,其中包含回话信息.浏览器会存储这样的回话信息,并在这之后,通过每个请求添加Cookie HTTP头将信息发回服务器. (2)cookie怎么用? 在JavaScript中,cookie的接口即document.cookie不太友好,可以自己封装相应的接口. 基本cookie操作:读

webdriver高级应用- 浏览器中新开标签页(Tab)

#encoding=utf-8 import unittest from selenium import webdriver import time import win32api, win32con VK_CODE ={'ctrl':0x11, 't':0x54, 'tab':0x09} # 键盘键按下 def keyDown(keyName): win32api.keybd_event(VK_CODE[keyName], 0, 0, 0) # 键盘键抬起 def keyUp(keyName)

在jsp中同一页面中多个标签页之间切换数据展示

示例图片: 像这样的上面多个tab页下面也有多个tab页面,其实只要学会一个嵌套就可以了,现在就说一下简单的一个页面的多个tab页面的展示

C++ CEF 浏览器中显示 Tooltip(标签中的 title 属性)

在 Windows 中将 CEF 集成到 C++ 客户端以后,默认是无法显示 tooltip 的,比如图片标签中的 title 属性. 实现的方式其实很简单,按下面的步骤操作就可以: 创建一个文本文件,文件名为 app.manifest,内容如下,将这个文件放到源代码文件夹 <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="

web前端中实现多标签页切换的效果

在这里,实现多标签页效果的方法有两个,一个是基于DOM的,另一个是基于jquery的,此次我写的是一个对于一个电话套餐的不同,显示不同的标签页 方法一: 首先,我们要把页面的大体框架和样式写出来,html和css代码如下: <ul id="tab">    <li id="tab1" onclick="show(1)">10元套餐</li>    <li id="tab2" oncli

112 python程序中的进程操作-进程之间进行通信(mulitiProcessing Queue队列)

一.进程间通信 IPC(Inter-Process Communication) IPC机制:实现进程之间通讯 管道:pipe 基于共享的内存空间 队列:pipe+锁的概念--->queue 二.队列(Queue) 2.1 概念-----multiProcess.Queue 创建共享的进程队列,Queue是多进程安全的队列,可以使用Queue实现多进程之间的数据传递. Queue([maxsize])创建共享的进程队列. 参数 :maxsize是队列中允许的最大项数.如果省略此参数,则无大小限制

小结一下,登录如何判断不同标签页登录两个账号的问题

今天无意中作出了,检测两个标签页登录两个账号的方法: 是这样的,这个项目,如果多账号登录的话,会出现一些古怪的现象,两个账号的个人信息不一样,支付订单信息却是一样的,同步的,这很可怕, 出现这样的原因是,代码不够规范,后端有用session来判断是不是同一个人的,也有的接口是根据userid来获取信息的,我将一些项目的配置信息存在了vuex中,并将vuex中的state值在刷新前都会在localStorage中存一份,放置刷新页面后vuex中的值丢失.(这个是一个小突破,但不是今天的重点). 问