2

2 つの iframeを含むページがあり、iframe に影響する親ウィンドウにリンクを設定できるかどうか疑問に思っていました。

iframe 内のページを変更する通常のリンクを作成する方法は知っていますが、iframe 内で JavaScript をアクティブにする必要があります。

// The JS | normally in one line
javascript:var%20KICKASSVERSION='2.0';
var%20s%20=%20document.createElement('script');
s.type='text/javascript';document.body.appendChild(s);
s.src='//hi.kickassapp.com/kickass.js';
void(0);

それをアドレスバーに入れると、ページを変更せずに機能しますが、iframeでこれが可能かどうか疑問に思っていました. ありがとう!

4

2 に答える 2

1

HTML iframeには、iframeの内部ドキュメントを操作できるcontentDocumentプロパティ(iframeのMDNページを参照)があります。

大まかなガイドライン(テストされていませんが、アイデアは得られます:)):

var iframe = document.querySelector("iframe");
iframe.contentDocument.location.href = "..."; // change the inner iframe's location
iframe.contentDocument.body.appendChild(yourScriptNode); // append a script inside the iframe
于 2012-05-26T15:48:01.733 に答える
1

コードを見ると、これを行う最も簡単な方法は次のようなことです。

var iframe=/*DOM REFERENCE TO YOUR IFRAME, for example:*/document.getElementById('myIframe');
iframe.src="javascript:var%20KICKASSVERSION='2.0';var%20s%20=%20document.createElement('script');s.type='text/javascript';document.body.appendChild(s);s.src='//hi.kickassapp.com/kickass.js';void(0);";

ただし、よりクリーンなアプローチは次のようになります。

var myLink=document.getElementById('myLink');

myLink.addEventListener('click',function(evt){
 var myFrame=document.getElementById('myFrame');
 var win=myFrame.contentWindow;

 win.KICKASSVERSION='2.0';
 var s = win.document.createElement('script');
 s.type='text/javascript';win.document.body.appendChild(s);
 s.src='//hi.kickassapp.com/kickass.js';

 evt.preventDefault();
}

すべての場合において、同一生成元ポリシーが適用されることに注意してください。

于 2012-05-26T15:52:47.750 に答える