1

の戻り値がdocument.location.hrefになるjavascript:window["contents"]場合があります。それはいつ起こりますか?それを避ける方法は?

コードが src url なしで iframe に配置されていることがわかりました。

<iframe id="google_ads_iframe_/21202031/LTN-000-03-HOME-120X600-DISPLAY_0" name="google_ads_iframe_/21202031/LTN-000-03-HOME-120X600-DISPLAY_0" width="120" height="600" scrolling="no" marginwidth="0" marginheight="0" frameborder="0" src="javascript:&quot;<html><body style='background:transparent'></body></html>&quot;" style="border: 0px; vertical-align: bottom;"></iframe>
4

2 に答える 2

2

ご想像のとおり、これは (I) フレームと関係があり、より具体的には、一部のスクリプト/ライブラリがそれらのフレームを処理する方法に関係しています。

フレームの inline-script-source で使用される変数/オブジェクトを保持/提供する外部 JavaScript (非同期にロードされる) をロードするときに、(IE で)回避するため手法です。ReferenceError

「 inject content into a new iframe 」という記事から最も関連性の高い部分を引用するには:

document.open/write/close を使用する代わりに、次のアプローチを使用します。

iframe.contentWindow.contents = content;
iframe.src = 'javascript:window["contents"]';

まず、動的コンテンツを iframe の window オブジェクトの変数に割り当てます。次に、javascript: スキームを介して呼び出します。これにより、HTML が適切にレンダリングされるだけでなく、スクリプトが目的の順序で読み込まれ、実行されます。

これは、 SO に関する同様の回答とも一致しています。

お役に立てれば!

于 2013-07-24T23:25:54.930 に答える