2

我在同一个文件夹中有两个本地 .html 文件。一个页面与另一个页面一起打开一个窗口,并尝试在新打开的窗口中调用一个函数。但是,函数调用失败,我在控制台中得到了这个:

不安全的 JavaScript 尝试从带有 URL file:///***/B.html 的框架访问带有 URL file:///***/A.html 的框架。域、协议和端口必须匹配。

这发生在 Chrome 和 Webkit (Mac) 上。有什么办法可以:禁用 file:// 协议的跨域检查,或者在不同的本地文件中调用 javascript 函数?

4

1 回答 1

2

您可以使用 window.postMessage 执行以下操作:

初始窗口 html 文件:

<!DOCTYPE html>
<html>
    <head>
        <script>
            var otherWindow;
            function openOther() {
                otherWindow = window.open("other.html", "otherWindow");

            }

            function otherFunc() {
                otherWindow.postMessage("otherFunc", "*");
            }
        </script>
    </head>
    <body>
        <div onclick="openOther()">Open the other window</div>
        <div onclick="otherFunc()">Call the other window's function</div>
    </body>
</html>

第二个窗口的HTML:

<!DOCTYPE html>
<html>
    <head>
        <script>
            window.addEventListener("message", function(event) {
                alert("The other window's function executed.");
            }, false);
        </script>
    </head>
    <body>
        <div>This is the other window.</div>
    </body>
</html>

这是window.postMessage的一个很好的参考。

于 2012-11-24T23:21:56.713 回答