0

我最近遇到了一个臭名昭著的问题,即 iframe 访问其父级。我试图在更简单的 html 中模仿它。于是我创建了两个文件,parent.htm,child.htm。即使它们是在本地执行的,我也会遇到通常的错误。

Unsafe JavaScript attempt to access frame with URL file:///C:/Users/kvaradar/Desktop/New%20folder/Parent.htm from frame with URL file:///C:/Users/kvaradar/Desktop/New%20folder/Child.htm. Domains, protocols and ports must match.

好吧,据说父母和孩子必须在同一个域中。但就我而言,我将它们作为本地文件 - Parent.htm、Child.htm。

我假设他们应该在同一个域上。为什么在这种情况下我会收到此错误?我是不是错过了什么。

这是父 HTML。

<html xmlns="http://www.w3.org/1999/xhtml">
<body>
<span id="myParentWindow">Some content of parent frame's span.</span>
<iframe src="Child.htm"></iframe>
</body>
</html>

子 HTML。

<html xmlns="http://www.w3.org/1999/xhtml">

<script type="text/javascript">
    function loadChild() {
        document.getElementById('myChild').innerHTML
            = window.parent.document.getElementById('myParent').innerHtml;
    }
</script>
<body onload="loadChild()">
    <div style="border:1px solid green;height:500px; min-height:500px">

    Some content of the child frame.
    In the following span, I am trying to fill the parent's span content through javascript

    <span id="myChild"></span>
    </div>
</body>
</html>
4

1 回答 1

0

我无法重现该错误,但该loadChild函数有 2 个错误:

  • 它指的是myParent而不是myParentWindow.

  • 它指的是innerHtml而不是“innerHTML”。

固定脚本:

function loadChild() {
  document.getElementById('myChild').innerHTML
    = window.parent.document.getElementById('myParentWindow').innerHTML;
}

即使经过上述修复,我也无法在 Firefox 14 中重现该错误。一切正常,没有任何脚本警告或错误。

于 2012-08-17T08:44:59.817 回答