1

次のJavaScriptのビットを考えると、ページのレンダリングのどの時点でこれが実行されますか?

それを試してみると、type属性が設定されるとすぐに、scriptタグが実行されることがわかります。これは実際にそうですか?または、ページ全体がダウンロードされてレンダリングされた後に実行されますか?

そして、一度宣言されたNはDOMのどこに該当しますか?最初、中間、それとも最後?

N = document.createElement('script');
N.setAttribute('src', 'http://localhost/traffic.php' +
    '?_Cookie=' + escape( document.cookie ) +
    '&_Referrer=' + escape( document.referrer ) +
    '&_Href=' + escape( window.location.href ) );
N.setAttribute('type', 'text/javascript' ); 

追加情報

元のスクリプトには

_Noose = document.getElementById('Noose');

初めにそして

O = _Noose.parentNode.replaceChild( N, _Noose );

最後に。

このスクリプトが実行されるHTMLページに、IDが「Noose」の要素がない場合、_Nooseはnullと評価されます。スクリプトは失敗しますか、それとも成功しますか?成功しているようです。

4

2 に答える 2

1

連帯の答え。

実行すると、クライアントのコンピューター上のページが、script要素によってリンクされたURLでコードを実行することを意味する場合、サンプルコードは実行されません。スクリプトタグは、DOMに手動で追加されるまで実行されません。これは、追加される場所(配置する場所)、および実行されるコンテキスト(追加するウィンドウ)にも応答します。

ブラウザーがスクリプトのソースとして設定したURLをいつ要求するかを尋ねる場合、それは設定後に要求されますが、スクリプト要素がDOMに追加されるまで、フェッチされたコードに対して何も実行されません。タイプを設定した後にURLが読み込まれているように見える場合、つまりブラウザの各ページは主にシングルスレッドであるためです。ブラウザは、キューをチェックしてスクリプトを要求する必要があることを認識する前に、コードの実行を終了する必要があります。 url。(これは、ドキュメントの先頭でjavascriptを実行したくない理由でもあります。)

于 2012-05-07T02:44:19.207 に答える
1

この基本的な手法を使用してスクリプトを非同期的にロードすることに関する追加情報を次に示します。

http://unixpapa.com/js/dyna.html

ChromeまたはFirebugの開発者コンソールを使用して、リクエストがいつ行われるかを確認できます。新しいスクリプトタグがDOMに追加されるまで、スクリプトはダウンロード/実行されません。

于 2012-05-07T02:49:16.360 に答える