2

子ウィンドウの親ウィンドウからjavascript関数を実行したい

私は別のウェブサイトに言わなければなりませんsite1.comそしてsite2.com

site1.comURLの新しいウィンドウを開きたいsite2.com

new_window = window.open("site2.com/index.php", "window2");

test()次に、このnew_windowでjs関数を実行したいと思います。

// Where site2.com/index.php 
<html>
    ......
</html>
<script>
   function test(){
    // some code here
   }
</script>

概要

新しいウィンドウ(子)を開き、親ウィンドウからいくつかのJS関数を実行したい。

4

2 に答える 2

4

次のように、クロス ドキュメント メッセージングを使用して、同じオリジン ポリシーを回避できます。

親ウィンドウ ( site1.com):

var site2 = window.open("http://site2.com");
site2.postMessage("test", "http://site2.com");

子ウィンドウ ( site2.com):

function test() {
    // some code here
}

window.addEventListener("message", function (event) {
    if (event.origin === "http://site1.com") {
        var funct = window[event.data];
        if (typeof funct === "function")
            funct();
    }
}, false);

これは簡単な例です。コールバックや戻り値などを許可するために、より洗練されたものにすることもできますが、それにはブログ投稿で完全に説明する必要があります。

詳細についてwindow.postMessageは、Mozilla Developer Networkを参照してください。

ただし、次の例は Internet Explorer では機能しないことに注意してください (明らかに)。

于 2012-06-13T08:42:02.177 に答える
0

セキュリティ上の理由から、同じドメイン上にない場合は、子ウィンドウから関数を実行する必要があります。

于 2012-06-13T08:23:45.463 に答える