解决 Uncaught DOMException: Blocked a frame with origin "http://localhost" from accessing a cross-origin frame.
主页面加上监听,用于父页面与子页面的交互
window.addEventListener(‘message’,msgHandler,false);
function msgHandler(e) {
console.log('main 主页面收到数据, msg.recv: '); //testing
console.log(e); //testing
currentSource = e.source;
console.log(currentSource);
currentOrigin = e.origin;
var data = JSON.parse(e.data);
switch(data.cmd) {
case ‘3D_INIT’:
send_3d_init_info();
break;
case ‘ROUTENET_MANAGE’: //3D页面请求航路网管理页面的相关数据
send_3d_routenet_manage();
break;
default:
console.error(“main 无法解析的消息”);
break;
}
}
子页面初始化就向父页面发送数据请求
$(document).ready(function(){
console.log(“window.location.href: “);
console.log(window.location.href);
var pageType=window.location.href.split(”=”)[1];
//初始化cesium
initCesium();
//通知主页面发送数据
window.addEventListener('message',msgHandler);
if(pageType){
switch (pageType) {
case '3D_INIT': //主页面
var msg = {"cmd":"3D_INIT"};
window.parent.postMessage(JSON.stringify(msg), '*');
break;
case 'ROUTENET_MANAGE': //航路网管理页面
var msg = {"cmd":"ROUTENET_MANAGE"};
window.parent.postMessage(JSON.stringify(msg), '*');
break;
default:
console.error("main 无法解析的消息");
break;
}
}
});