浅谈postMessage多页面监听事件

最近做了一个Echarts和Highcharts多图多页面连动的效果,就用到postMessage

如下介绍:

最开始在最外围的页面也就是所有页面的父级页面添加postMessage监听事件以便监听下面子级页面的动态,代码:

window.parent.addEventListener(‘message‘,function(e){

      if(e.source != window.parent) return;

      var names = localStorage.getItem("toName");

      window.postMessage(names,‘*‘);    //*代表所有页面

},false)

之后在在开始的页面写入传入message指令,代码:

var objString = JSON.stringify({from:"toOne",value:data.name});   //这里就是多页面监听的重点,每次页面向父级页面传入message的时候都是用json格式传入,之后就能通过判断from的来源来判断是点击了那幅图要实现什么效果

var clickName = localStorage.setItem("toName",dataName);    //本地保存一个点击对象的名称

window.parent.postMessage(data.name,‘*‘);   //将数据的名称上传到父级

最后在不同页面的调用,代码:

window.parent.addEventListener(‘message‘,function(e){

    var Title,from;

    try{

      var obj = JSON.parse(e.data);    //转换json字符

      Title = obj.value;

      from = obj.from;

    }catch(er){

       Title = e.data; 

    }

    if(from=="toOne"){

      //用if判断是哪个页面传入的变量,对应的执行什么代码  

    }else{

      //不满足上面的条件又执行什么

    }

}

时间: 2024-10-24 23:07:36

浅谈postMessage多页面监听事件的相关文章

jQuery页面滚动监听事件及高级效果插件

jQuery页面滚动监听事件及高级效果插件 1. One Page scroll (只适用于上下焦点图)http://www.thepetedesign.com/demos/onepage_scroll_demo.html 2. Scrolld(更不好用)https://github.com/charliegeiger89/Scrolld.js#readme 3. Animate Scroll(参数太少,不好用)https://github.com/ramswaroop/animatescrol

浅谈HTML5单页面架构(二)——backbone + requirejs + zepto + underscore

本文转载自:http://www.cnblogs.com/kenkofox/p/4648472.html 上一篇<浅谈HTML5单页面架构(一)——requirejs + angular + angular-route>探讨了angular+requirejs的一个简单架构,这一篇继续来看看backbone如何跟requirejs结合. 相同地,项目架构好与坏不是说用了多少牛逼的框架,而是怎么合理利用框架,让项目开发更流畅,代码更容易管理.那么带着这个目的,我们来继续探讨backbone. 首

JAVAscript学习笔记 js句柄监听事件 第四节 (原创) 参考js使用表

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>句柄添加监听事件</title> <script type="text/javascript" src="tzy.js"></script> </head> <body>

ios ---键盘的监听事件

//在view将要出现的时候重载viewWillAppear方法添加通知 监听事件 keyboardWillShow:  keyboardWillHide: - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:

js中的监听事件总结

javascript事件与功能说明大全:http://tools.jb51.net/table/javascript_event 1.滚动条监听事件 例:监听滚动条距离页面顶端距离 1 <script type="text/javascript"> 2 window.onscroll= function(){ 3 //变量t是滚动条滚动时,距离顶部的距离 4 var t = document.documentElement.scrollTop||document.body.

vue v-on监听事件

在html或jsp页面中我们总能碰到监听DOM事件来触发javaScript代码,下面我们就简单聊聊Vue.js中的监听事件是怎么处理的. 在vue.js中监听事件是通过v-on指令来实现的,先看一下简单的监听事件代码. 1 <!DOCTYPE html> 2 <html> 3 <head lang="en"> 4 <meta charset="UTF-8"> 5 <title></title>

Android实现TextView中部分文字监听事件

通常我们只需要用TextView来显示文本信息,展示给用户看,而把点击相应的监听事件交给Button等控件来处理,当然TextView也可以实现点击事件.有时候我们要对TextView中的部分文字进行点击,我们应该如何操作呢?一般有以下三种方式: 1,在布局文件中设置TextView的android:autoLink属性,比如设置android:autoLink="phone",则可以点击手机号码直接拨打电话.android:autoLink设置是否当文本为URL链接/email/电话

Redis集群环境下的键值空间监听事件实现方案

一直想记录工作中遇到的问题和解决的方法,奈何没有找到一方乐土,最近经常反思,是否需要记录平时的点滴,后台还是决定下定决心记录一些,以便以后用到的时候找不着,实现这样的一个功能主要也是业务所需要的. 需求:要求统计所有会员在线人数,并根据会员在线状态同步改变人数. 之前用户登录使用session去控制,那么可以通过session进行在线用户人数统计,后来实现无状态不在依赖session作为用户在线的标准,使用Redis替换了Session,那么用户直接退出也好做,但是会存在用户直接关闭页面的情况,

vue 中监听窗口发生变化,触发监听事件, window.onresize &amp;&amp; window.addEventListener(&#39;resize&#39;,fn) ,window.onresize无效的处理方式

1 // 开始这样写,不执行 2 window.onresize = function() { 3 console.log('窗口发生变化') 4 } 5 6 7 // 改成window监听事件 8 window.addEventListener('resize', function() { 9 console.log('窗口发生变化') 10 }) onresize的定义方式 一.直接在html中定义 如<body onresize="doResize()"/> 二.直接