您的位置:首页 > 其它

谷歌浏览器的一个新特点—关于获取iframe的parent对象

2014-05-14 11:48 316 查看
        谷歌浏览器在调试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)发布一下。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息