2

同じフォルダに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>

2番目のウィンドウの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 に答える