如何从iframe调用主窗口中的函数?

时间:2013-03-15 02:33:37

标签: javascript html function iframe frame

首先,我知道这个问题与其他问题重复。但我试图在stackoverflow中跟踪许多问题的许多样本,但它不起作用。我无法从iframe调用主窗口的功能,但如果我使用帧标签它的工作。

我试过这样。

主窗口:

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

的test.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 

许多形式与此相似。

你有什么想法吗?或者我做错了什么?

1 个答案:

答案 0 :(得分:0)

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

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

如果主页面(使用iframe)和iframe页面位于同一目录中,或者iframe页面是主页面目录的子目录,则它将在FireFox中运行。

上述内容无法在您需要start chrome with the flag --allow-file-access-from-files

的Chrome中使用