4

この例は、Google アナリティクスです。

document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));

document.write() をリテラル値に置き換えるだけでよいでしょうか。

<script type="text/javascript" src="http://www.google-analytics.com/ga.js">

? gaJsHost( 'http://www.') の値が事前にわからないため、document.write() のみでタグが出力されると推測しています。しかし、それがわかっている場合、スクリプトタグを文字通りに含める代わりに document.write() で出力する理由はありますか?

4

5 に答える 5

3

デフォルトでは、HTML ページでスクリプトが検出されると、ページの残りの部分の読み込みがブロックされます。ダウンロードと実行が完了したときにのみ、ページの残りの部分が引き続き読み込まれます。Nicholas C. ZakasによるHigh Performance Javascriptから:

スクリプトの実行中にページが変更される可能性があるため、これはページのライフサイクルの必要な部分です。典型的な例は、ページの途中で document.write() を使用することです (広告でよく使用されます)。

上記のようにスクリプトを動的に挿入することで、その動作を克服することができます - ページのブロックなし - ロードは非同期的に発生します。

ページの下部に配置することで、javascript の前に html と css が読み込まれるようになります。このようにして、JavaScript がロードされている間、ユーザーは既にページを表示できます。

パフォーマンスがすべてです。

于 2012-09-24T19:33:31.210 に答える
2

ページがレンダリングされた後にブラウザがそれらを確実にロードするようにします。

パフォーマンスのものです。

于 2012-09-24T19:31:42.780 に答える
0

スクリプトで生成されたテキストをページに追加する最も速い方法です[ブラウザはDOM構造を変更する必要はありません]。したがって、広告スクリプトの挿入に使用されます[広告サーバーが遅い場合のダウン]。ユーザーが生成したデータをURLに追加します。ランダムな値を追加することにより、キャッシュを防止します。

基本的にその速度のために使用されます。

于 2012-09-24T19:49:09.893 に答える
0

考えられる理由はいくつかあります。 1. javaScript ファイルがロードされる前に、DOM の一部がページ上にすでに存在していることを確認するため。これにより、作成されていない DOM 要素を操作しようとするのを防ぐことができます。2.物事をスピードアップする; ブラウザーは通常、javaScript をロードするときにシングル スレッド モードになるため、最初にそれが本当に必要ない場合は、それを遅らせるのが最善です。

于 2012-09-24T19:34:44.297 に答える
0

最初にそれについての素晴らしいリソースを参照します。

http://webreflection.blogspot.com/2009/12/documentwriteshenanigans.html

したがって、これを読んだ後、ページがレンダリングされた後にスクリプトが読み込まれるという利点があることがわかります。

于 2012-09-24T19:35:26.760 に答える