我正在尝试从 iFrame src加载的其中一个js文件中访问父对象。页面和 iFrame src位于不同的域中。由于网络安全和相同的原始政策,我得到“未捕获的安全错误: Blocked a frame with origin "http://example.com:1211" from accessing a cross-origin frame"
。
需要访问父对象并设置为iFrame变量之一。所以,我失去了 window.postMessage()的选项。有什么方法可以解决这个问题吗?请提出一些建议。
答案 0 :(得分:0)
与SilverlightFox一样,postMessage()应该可以在不同的域中运行。
您是否可以访问父级和iframe src?如果是这样,您可以在iframe src中添加这样的内容来发送消息:
<script type="text/javascript">
function post(msg) {
var msg = "Do something"; // Can be string or numeric.
parent.postMessage(msg, '*');
}
post();
</script>
然后在您的父母那里收到消息:
<script>
function listener(event){
if (event.origin !== 'https://myotherdomain.com' ){ //Optional check for message source
return
}
var info = event.data;
DoSomething(info);
}
// Set up event handler when parent page loads.
if (window.addEventListener){
addEventListener("message", listener, false)
} else {
attachEvent("onmessage", listener)
}
</script>