【问题标题】:Can't Access Parent-document from Iframe无法从 iframe 访问父文档
【发布时间】:2013-10-28 01:28:29
【问题描述】:

我有一个主页,用于导航到 iframe

中的其他 3 个页面

主页:1.html

其他 3 个页面:one.htmltwo.html3.html

代码

1.html

<html>
    <body>
        <div>
           <ul>
             <li style="float:left; margin:20px;"><a href="One.html" target="target">One</a></li>
             <li style="float:left; margin:30px;"><a href="Two.html" target="target">Two</a></li>
             <li style="float:left; margin:50px;"><a href="Three.html" target="target">Three</a></li>
           </ul>
           <iframe id="target"></iframe>
        </div>
    </body>
</html>

one.html

<html>
    <body onload="try{alert(parent.location.href);} catch(e){alert(e);}">
        1.html.
    </body>
</html>

但是显示parent-文档的位置时出现问题。它会发出如下警告消息:

SecurityError: Blocked a frame with origin "null" from accessing a frame with origin "null". Protocols, domains, and ports must match.

任何人都可以在此错误的上下文中解释消息中使用的术语的含义,或者解释为什么会发生这种情况???

注意:未使用服务器

【问题讨论】:

  • 这可能是你的问题。如果您从磁盘读取文件,我猜原点为空?根据浏览器的不同,您可能会使用一些选项来启动它以忽略相同的来源策略。
  • @plalx 如果我从我自己的本地文件系统访问文件,那么安全问题是什么???你能解释一下吗?
  • 你说你可以访问另一个框架,你试过读取它的属性吗?
  • @plalx,对不起。刚才我注意到我只能使用语法parent.frames['id']访问当前帧。

标签: javascript html google-chrome iframe


【解决方案1】:

Chrome 相当严格地假设本地文件之间没有连接。

在 Mac 上,您可以像这样从终端启动 Chrome:

/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --allow-file-access-from-files

它会起作用,但最好的办法是使用网络服务器。

【讨论】:

  • 是的。其他浏览器可能会以不同的方式处理它。
  • 蒂姆,谢谢。 这在 IE9 中有效。感谢这个非常相关的信息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多