2017-06-05 30 views
0

私は両方のドメインを制御し、必要なポリシーを設定できます。 iframeのドメインは、ほとんど同じライブラリを使用しています。可能であれば、それらを親から離れさせたいと考えていました。別のドメインのiframe parentからjavascriptにアクセスできますか?

明らかに、私はクロスドメインリクエストの作成方法を尋ねていません。親が別のドメインにいるとき、iframeの親からスクリプトを取得する方法を尋ねています。

私は(ここでは私の他のライブラリと同じjQueryのをしようとして)これでパーミッションエラーを取得しています:

if (typeof(jQuery) == "undefined") { 
    var iframebody = document.getElementsByTagName("body")[0]; 
    var jQuery = function (selector) { return parent.jQuery(selector, iframebody); }; 
    var $ = jQuery; 
} 
$("<h1>Hello World</h1>").appendTo("body"); 

、彼らが同じドメイン上にあった場合、これは動作します。

私はこれがクロスドメインであり、セキュリティ上の理由でブロックされていることを知っていますが、両方のドメインを制御し、どちらもセキュリティに敏感ではないと考えて、

これはできますか?

答えて

0

postMessageを使用すると、フレームとその親ウィンドウ間で情報をやりとりすることができます。

https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage

あなたはそれが住んでいるドメイン内の要素を変更するコードを実行する必要がありますが、あなたはそれをキックオフするために、親にポストメッセージhandlerlerを設定することができます。

// child window (iframe content) 
parent.postMessage("hi there", "https://parent.domain.here"); 


// parent window 
window.addEventListener("message", function(message){ 
    $("<h1>"+message+"</h1>").appendTo("body"); 
}); 
1

あなたは両方のページで同じソースからjsファイルが含まれている場合、それは一度だけロードされますが、両方のサイトにアクセスできるようになります:

//parent/main.html 
<script src="jquery.js"></script> 
<iframe src="http://other/iframe.html"></iframe> 
<script> 
    $(document.body).html("wohoo"); 
</script> 

//other/iframe.html 
<script src="http://parent/jquery.js"></script> 
<script> 
    $(document.body).html("wohoo"); 
</script> 

ので聞きしたいのiframe内にアクセスした場合、スクリプトは一度だけロードされ、他のスクリプトなしでスクリプトにアクセスすると、それでも動作します。

関連する問題