子页面
window.onload = function(){ window.parent.postMessage("getcolor","*"); window.addEventListener("message", function(e){ var agentid=JSON.parse(e.data).agentid; var mediaAgentId=JSON.parse(e.data).extNum; $("#phone-agentId").html(agentid) $("#phone-num").html(mediaAgentId) }, false); }父页面
window.addEventListener("message", function(e){ var text =localStorage.getItem('UserMsg'); function aaa(){ alert(1) } console.log( text); window.frames[0].postMessage( text,'*'); }, false);
postMessage(data,origin)方法接受两个参数
1.data:要传递的数据,html5规范中提到该参数可以是JavaScript的任意基本类型或可复制的对象,然而并不是所有浏览器都做到了这点儿,部分浏览器只能处理字符串参数,所以我们在传递参数的时候需要使用JSON.stringify()方法对对象参数序列化,在低版本IE中引用json2.js可以实现类似效果。
2.origin:字符串参数,指明目标窗口的源,协议+主机+端口号[+URL],URL会被忽略,所以可以不写,这个参数是为了安全考虑,postMessage()方法只会将message传递给指定窗口,当然如果愿意也可以建参数设置为"*",这样可以传递给任意窗口,如果要指定和当前窗口同源的话设置为"/"。