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

使用cookie,使用web worker,使用localeStorage和sessionStorage

cookie,兼容性很好,但是大概4kb.同时,cookie可以永久存在,也可以再回话结束后结束。要就关闭标签页回话立即结束时,不要用cookie,因为它还很有可能会存在一段时间,即使是session-cookie。

  1. 用户在浏览器输入url,发送请求,服务器接受请求
  2. 服务器在响应报文中生成一个Set-Cookie报头,发给客户端
  3. 浏览器取出响应中Set-Cookie中内容,以cookie.txt形式保存在客户端
  4. 如果浏览器继续发送请求,浏览器会在硬盘中找到cookie文件,产生Cookie报头,与HTTP请求一起发送.
  5. 服务器接受含Cookie报头的请求,处理其中的cookie信息,找到对应资源给客户端.
  6. 浏览器每一次请求都会包含已有的cookie.

Sessionstorage:不支持跨标签页共享数据。比如,每次新开启一个标签页都要求用户重新登录。

Localstorage:此处作者用localstorage事件来解决这个问题。思路:当打开一个新的标签页的时候,先询问是否有sessionstorage。如果有,现有标签页通过localstorage事件向新页面传递sessionstorage,新页面获取后设置。

在标签页中有如下代码

(function()
{
    If(!sessionStorage.length)
    {//新打开的标签页,sessionStorage
        localStorage.setItem("getsessionStorage",Date().now);
        //触发storage事件,新旧页面都会监听
        window.addEventListener("storage",add);

        function add(event)
        {
            if(event.key =="getsessionStorage")
            {
                以下操作对已有页面
                localStorage.setItem("sessionStorage",JSON.stringify(sessionStorage));
                localStorage.removeItem("sessionStorage");
            }
            else if(event.key=="sessionStorage"&& !sessionStorage.length){
                var data=JSON.parse(event.newValue);
                for(var key in data){
                    sessionStorage.setItem(key,data[key]);
                }

            }
        }
        ;
    }
})()

不同的标签页

方法一

第一个页面设置cookie

用document.cookie=”name=”+name;

第二个页面获得

function getCookie(key) {
    return JSON.parse("{\""+document.cookie.replace(/;\s+/gim,",").replace(/=/gim,":")+"\"}");//g,全局  i忽略大小写 m多行搜索
}
setInterval(getCookie(key),1000);

方法二

利用localstorage设值传递。

    localStorage.setItem(key,value);

调用 localstorge、cookies 等本地存储方式

方法一:使用localStorage

使用localStorage.setItem(key,value);添加内容

使用storage事件监听添加、修改、删除的动作

 

 window.addEventListener("storage",function(event){  

          $("#name").val(event.key+”=”+event.newValue);  

  });  

方法二、使用cookie+setInterval  

<inputidinputid="name"><input type="button" id="btnOK"value="发送">  

    

$(function(){  

     $("#btnOK").click(function(){  

           varname=$("#name").val();  

           document.cookie="name="+name;  

       });  

  });  

//获取Cookie天的内容  

function getKey(key) {  

    return JSON.parse("{\""+ document.cookie.replace(/;\s+/gim,"\",\"").replace(/=/gim, "\":\"") +"\"}")[key];  

}

 //每隔1秒获取Cookie的内容  

setInterval(function(){  

    console.log(getKey("name"));  

 },1000); 
时间: 2024-12-25 14:58:18

实现多个页面之间进行通信的相关文章

两个页面之间的通信

今天要给大家说的是两个不同页面之间的通信,通过一个拖拽demo来模拟: 首先,写好基础的拖拽代码: <script> window.onload = function() { var oDiv = document.getElementById('div'); oDiv.onmousedown = function(ev) { var ev = window.event || ev; var disX = ev.clientX - oDiv.offsetLeft; var disY = ev.

让微信小程序页面之间的通信不在变得困难

一个开始 小程序开发者总会碰到各种页面之间的通信问题,实现方式也五花八门,比如... 场景还原 首先这是一个电商小程序. 有这样一个需求: 首页某个地方要展示购物车商品数量. 当我在其他页面加购了商品,首页数量刷新. 实现方式 方式一:onShow直接请求接口 Page({ onShow() { // ...一些逻辑 // 后端请求新的购物车数量 this.requestCartNum(); } }) 不足: 每次onShow都要请求接口,浪费资源. 方式二:globalData存储购物车数量,

html5 xdm 页面之间的通信

<!-- 这个是父页面xdm.html --><!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>XDM通信</title> </head> <body> <iframe id="iframeId" src="http://127.0.0.1:8020/avalon/ifram

浏览器不同页面之间的通信

1.在B页面中可以使用window.opener获得A页面的window句柄,使用该句柄即可调用A页面中的对象,函数等.例如A页面定义js函数onClosePageB,在B页面可以用window.opener.onClosePageB来进行回调.2.使用 window.showModalDialog(sURL [, vArguments] [,sFeatures])打开新窗口.其中vArguments 参数可以用来向对话框传递参数.传递的参数类型不限,包括数组.函数等.对话框通过window.d

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

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

【JavsScript】父子页面之间跨域通信的方法

由于同源策略的限制,JavaScript跨域的问题,一直是一个比较棘手的问题,为了解决页面之间的跨域通信,大家煞费苦心,研究了各种跨域方案.之前也有小网同学分享过一篇“跨域,不再纠结” 开始照着尝试时还是有些不够明白的地方,深入了解之后,这里给大家补充一点更具体的做法. 先来看看哪些情况下才存在跨域的问题: 其中编号6.7两种情况同属于主域名相同的情况,可以设置domain来解决问题,今天就不讨论这种情况了. 对于其他跨域通信的问题,我想又可以分成两类: 其一(第一种情况)是a.com下面的a.

【JavaScript】父子页面之间跨域通信的方法

由于同源策略的限制,JavaScript跨域的问题,一直是一个比较棘手的问题,为了解决页面之间的跨域通信,大家煞费苦心,研究了各种跨域方案.之前也有小网同学分享过一篇“跨域,不再纠结” 开始照着尝试时还是有些不够明白的地方,深入了解之后,这里给大家补充一点更具体的做法. 先来看看哪些情况下才存在跨域的问题: 其中编号6.7两种情况同属于主域名相同的情况,可以设置domain来解决问题,今天就不讨论这种情况了. 对于其他跨域通信的问题,我想又可以分成两类: 其一(第一种情况)是a.com下面的a.

父子页面之间跨域通信的方法

作者: lyndon  来源: 腾讯大讲堂  发布时间: 2014-08-08 08:59  阅读: 5025 次  推荐: 20   原文链接   [收藏] 由于同源策略的限制,JavaScript跨域的问题,一直是一个比较棘手的问题,为了解决页面之间的跨域通信,大家煞费苦心,研究了各种跨域方案.之前也有小网同学分享过一篇“跨域,不再纠结” 开始照着尝试时还是有些不够明白的地方,深入了解之后,这里给大家补充一点更具体的做法. 先来看看哪些情况下才存在跨域的问题: 其中编号6.7两种情况同属于主

[转]父子页面之间跨域通信的方法

父子页面之间跨域通信的方法 2014/08/08 · Web前端 由于同源策略的限制,JavaScript跨域的问题,一直是一个比较棘手的问题,为了解决页面之间的跨域通信,大家煞费苦心,研究了各种跨域方案.之前也有小网同学分享过一篇“跨域,不再纠结” 开始照着尝试时还是有些不够明白的地方,深入了解之后,这里给大家补充一点更具体的做法. 先来看看哪些情况下才存在跨域的问题: 编号 URL 说明 是否允许通信 1 http://www.a.com/a.js http://www.a.com/b.js