js を使用して iframe ノードを動的に作成し、src 属性を設定し (1)、最後にノードを DOM に追加するとします (2)。
ブラウザーが src コンテンツを要求するのはいつですか? (1)の後?(2)の後?それとも予測不能ですか?ブラウザに依存しますか?
js を使用して iframe ノードを動的に作成し、src 属性を設定し (1)、最後にノードを DOM に追加するとします (2)。
ブラウザーが src コンテンツを要求するのはいつですか? (1)の後?(2)の後?それとも予測不能ですか?ブラウザに依存しますか?
iframe
要素が最初にドキュメントに挿入されるとき、ユーザー エージェントはネストされたブラウジング コンテキストを作成し、次に 属性を初めて処理する必要があります。iframe
var f = document.createElement('iframe');
f.src = '/?';
リソースが取得されることはありません (テスト済みのブラウザーの最低バージョンと最高バージョンのみを示しています)。
そのため、フレームがドキュメントに追加されたときにのみリクエストが送信されます。
(2)の後。それ以前はただのJSです。ブラウザは、DOM にアタッチされるまで動作しません。
さて、私はあなたのためにすべてのブラウザをテストするつもりはありませんが、いつ/どこで iframe またはjs ファイルは、大量のセキュリティおよび一般的な実装に関する問題に該当するドキュメントに分類されます。ブラウザー ベンダーが他の方法でそれを行うのは重大な失敗であり、クロムが少しの実験でそのようにするという事実を確認できます。
私が考えることができる唯一の例外は、挿入前にロードできる画像です。
私の経験では、常にノードが DOM に追加されたときです。Firebug またはその他の開発コンソールをロードして、これがいつ発生するかを確認できます。次のようなタイミングを確認するために、いくつかのアラートを投入します。
<script type="text/javascript">
ifrm = document.createElement("IFRAME");
ifrm.setAttribute("src", "http://blah.com/");
alert('SRC SET');
ifrm.style.width = 640+"px";
ifrm.style.height = 480+"px";
document.body.appendChild(ifrm);
alert('ADDED TO DOM');
</script>
そのようなものを実行し、Firebug の「Net」タブを見て、ページがいつ要求されたかを確認します。appendChild が呼び出された後にのみ要求されると思います。
アフター(2)!! これを見てください:http://jsfiddle.net/lbstr/td7DD/
firebug または chrome のコンソールを開き、net タブを見てください。Google の読み込みが表示されます。次に、3 行目をコメントアウトして、再度実行します。Google の読み込みは表示されません。