0

image.src を使用して 1x1 gif をリクエストしたときに問題が発生しました。しかし、chrome と safari を使用すると、要求が Web サーバーに記録されません。しかし、JavaScriptを使用して数秒(300ミリ秒としましょう)遅延させると、動作します。300ミリ秒の遅延を使用する代わりに、より良い解決策を知っている人はいますか(クリックが遅くなるため)?

私のjavascriptはそのように見えます

/* Event Capture */
function eventCapture(et,ep,eid,eurl) {     
  var ec=new Image();
  ec.src=cp+cd+cu
  +"&et="+escape(et)
  +"&ep="+escape(ep)
  +"&ei="+escape(eid)
  +"&eu="+escape(eurl)+_do+_vo
  +"&cb="+new Date().getTime();   
}

誰かがreqsonを知っていますか?

4

2 に答える 2

0

遅延をどのように設定していますか?電話するだけなら

setTimeout("javascript function",milliseconds);

イベントキャプチャで遅延をそこに置くと、ページの残りの部分がブロックされてはならず、各呼び出しが残りの部分から独立した新しいsetTimeoutを呼び出すため、一度に複数のクリックを処理できます。

あなたのコードに関する限り、変数cp, cd, and cuは他の場所でグローバルに定義されていると思いますか?スクリプトが最初に呼び出されたときに何かが定義されていない場合、画像の文字列をReferenceError作成している間、Chromeはしばらくスローします。これは、すべてをスローしている可能性があります。src

于 2012-09-01T16:54:28.437 に答える
0

1 つの可能性は、イメージ変数への永続的な参照がないため、イメージがすぐにガベージ コレクションされることですec。しかし、 a を実行するsetTimeout()と、変数を十分に長持ちさせるクロージャが作成されます。

画像が実際に読み込まれるまで一時的な閉鎖を作成するこのソリューションをテストして、問題が解決するかどうかを確認できます。

/* Event Capture */
function eventCapture(et,ep,eid,eurl) {     
  var ec=new Image();
  ec.onload = function() {
      ec = null;
  }

  ec.src=cp+cd+cu
  +"&et="+escape(et)
  +"&ep="+escape(ep)
  +"&ei="+escape(eid)
  +"&eu="+escape(eurl)+_do+_vo
  +"&cb="+new Date().getTime();   
}
于 2012-09-01T18:01:19.127 に答える