3

私の問題は、JavaScript (多くの場合 Google アナリティクス) の読み込みに非常に時間がかかる場合があることですが、HTML を「走査して操作する」準備ができているかどうかは重要ではありません。次のコードを使用するとします。

$(document).ready(function () {
    $("p").text("The DOM is now loaded and can be manipulated.");
});

これは、<p>Google アナリティクスのようなものが読み込まれるまでデータが入力されないということでしょうか?

Google アナリティクスのようなものは、通常、ほとんどの Web サイトでは必要ありません。読み込みが完了するのを待っていることがよくあります。(信頼性が低いため、onload は使用したくありません。)

「[...]を待たないで」と言うより良い方法または方法はありますか?

注:サイトはテンプレートに基づいているため、通常、<script>タグの直前にコードをタグに配置することはできません。</body>私は通常、ページの「コンテンツ」しか編集できません。

4

5 に答える 5

6

ready 関数内から Google アナリティクスを読み込んでみましたか? 動的スクリプトの読み込みについて説明しているリンクを次に示します。おそらく、準備ができたスクリプトの他の部分が既に実行された後、最後にこれを行うでしょう。

于 2008-12-30T02:52:37.080 に答える
5

Google は実際に、彼らがAsynchronous Trackingと呼んでいるものをリリースしました:

<script type="text/javascript">

  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-XXXXX-X']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ga);
  })();

</script>

これにより、DOM が解析された後にのみロードされるため、問題が解決されます。したがって、ページ上のすべてのものを既に使用できます。

于 2010-02-12T06:51:16.173 に答える
-1

これは単なる推測ですが、setTimeOut() について考えたことはありますか?

$(document).ready(function()
{
   setTimeOut(function()
   {
      // Your code comes here
   }, 0); // We don't really need any delay
});

setTimeOut() にはコール スタックをエスケープする優れた機能があるため、問題が解決する可能性があります。

于 2008-12-30T03:01:12.100 に答える
-2

同じ問題がありました。次の行を最初の JavaScript ロード時に配置するだけで、その後 IE で正常に動作します。

jQuery.noConflict();
于 2009-03-27T05:01:32.380 に答える