我可以使用javascript在两个本地html文件之间进行通信吗?

时间:2012-11-24 21:40:11

标签: javascript html cross-domain

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

  

不安全的JavaScript尝试使用URL文件:///***/B.html从具有URL文件:///***/A.html的框架访问框架。域,协议和端口必须匹配。

Chrome和Webkit(Mac)都会出现这种情况。有没有办法可以:禁用file://协议的跨域检查,或者在不同的本地文件中调用javascript函数?

1 个答案:

答案 0 :(得分: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的一个很好的参考。