js报错信息:Uncaught SecurityError: Blocked a frame with origin "http://127.0.0.1:8080" from accessing a frame with origin "http://localhost:8888". Protocols, domains, and ports must match.
不支持跨域调用javascipt方法,例如:window.parent.func();这种调用方式不被支持,跨域的时候会报上面的错误。
我的解决方法是用html5的方法:postMessage。
在iframe中触发postMessage方法,向父窗体发送message。父窗体监听消息,根据message中传递的不同的标志,做不同的处理。
实例代码:
//iframe中跨域通信 function postMessage(data){ var post = {type:type,data:data}; window.parent.postMessage(post,'*'); }
//父窗体中监听消息 window.addEventListener('message',function(e){ var color=e.data; switch(parseInt(color.type)){ case 1: break; case 2: break; default:break; }
}
详细可以参考大神详细解读postMessage方法:
html5 postMessage解决跨域、跨窗口消息传递