0

首先,我知道这个问题与其他问题重复。但是我尝试从stackoverflow中的许多问题中跟踪许多样本,但它没有用。我无法从 iframe 调用主窗口的功能,但如果我使用框架标签,它就可以工作。

我试过这样。

主窗口:

<body>
<iframe src='test.html'></iframe>
<script>            
    var alertFunc = function(){
        window.alert("work!");
    }   
</script>
</body>

测试.html

<body>
    <input type="button" onclick="window.parent.alertFunc();" value="Test" />
</body>

来自控制台的错误消息。

Unsafe JavaScript attempt to access frame with URL file:///C:/.../index.html from frame with URL file:///C:/.../test.html. Domains, protocols and ports must match.
 test.html:30
Uncaught TypeError: Cannot call method 'alertFunc' of undefined 

和许多类似的形式。

你有什么想法?还是我做错了什么?

4

1 回答 1

0

看起来您正在直接从文件系统访问文件,例如 c:.....\page.html。

由于相同的源策略导致的错误,如果您将站点部署在 tomcat 或任何其他 Web 服务器中,而不是从本地文件系统访问它,它应该可以工作,假设这两个文件来自同一个域空间。

如果主页面(带有 iframe)和 iframe 页面在同一目录中,或者如果 iframe 页面是主页面目录的子目录,它将在FireFox中工作。

以上内容在 chrome 中不起作用,您需要使用 flag 启动 chrome --allow-file-access-from-files

于 2013-03-15T03:04:36.493 回答