谷歌浏览器在调试JavaScript脚本方面很方便,今天在使用谷歌浏览器调试代码时无意间发现了一个奇特的问题:Blocked a frame with origin "null" from accessing a frame with origin "null". Protocols, domains, and ports must match.,这主要是没有获取iframe所在页面的parent的造成的,代码如下:
index.html:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<script type="text/javascript">
function test() {
alert(‘您成功调用了iframe标签所在页面的函数!‘);
}
</script>
</head>
<body>
<iframe frameborder="1" src=‘child.html‘ style="width:50%; height:50%;" ></iframe>
<div style="font-size: 36px; margin-left: 40%; color: red;">iframe标签所在页面</div>
</body>
</html>
child.html:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
</head>
<body>
<input type="button" onclick="javascript:window.parent.test();" value="调用iframe标签所在页面的函数"/>
<div style="font-size: 21px; margin-left: 40%; color: red;">iframe标签所引用的页面</div>
</body>
</html>
【0分下载代码文件】
如果上面代码在电脑上直接使用谷歌浏览器运行就会出现上面的错误“Blocked a frame with origin "null" from accessing a frame with origin "null". Protocols,domains, and ports must match.”,而使用诸如IE浏览器直接访问则不会出现这种情况;如果将其使用服务器(比如Tomcat)发布一下,再次使用谷歌浏览器通过http访问index.html文件则不会出现这种情况。
总结:如果在本地用file协议使用谷歌浏览器打开含有iframe标签的页面,则被iframe标签引用的页面无法访问iframe标签所在页面的parent对象,除非使用服务器(比如Tomcat)发布一下。
谷歌浏览器的一个新特点——关于获取iframe的parent对象,布布扣,bubuko.com
谷歌浏览器的一个新特点——关于获取iframe的parent对象
原文地址:http://blog.csdn.net/gaohuanjie/article/details/25781445