0

Google ウェブサイト オプティマイザーを実行しており、クライアント側の Cookie チェックを実行して、コンテンツを 1 回だけ表示しています。

ただし、Cookie を使用すると、致命的とは思えない JavaScript エラーが発生しますが、1 つの js エラーで Internet Explorer が完全に壊れることを読んだことがあります。

問題のコード行は <script>utmx_section("Blah")</script>

この行は Google から直接提供されていますが、定義されていないエラーが発生します。現在、ページの一番下で実行されているため、最悪の場合は GA が実行されないことです。

しかし、危険は何ですか?


編集:問題は難解であり、間違いや誤った仮定が原因である可能性があるため、JSのデバッグを直接求めていませんでした。問題は、問題を無視することが危険かどうかでした。

問題の関数を提供するJavaScriptが適切に含まれていても、「utmx_sectionが定義されていません」というエラーが表示されます。エラーをスローするページとスローしないページの唯一の違いは、エラーをスローしないページで、追加の JQuery が (Cookie をチェックする条件により) 実行されます。

さらなる編集: 必要な場合 (つまり、Cookie を使用していないユーザー) にのみ PHP 条件付きで utmx 行を実行することで、問題を回避しました。

4

3 に答える 3

2

ほとんどのユーザーは、エラーが表示されないように JavaScript 通知をオフにしています。あなたの場合、エラーは「ブラウザを壊す」ことはありません。それが壊れる場所は、その関数への後続の呼び出しと、そのスクリプト ブロック内のその呼び出しの後のコードです。

utmx_section("Blah");
// later:
utmx_section("Correct"); <-- will not fire

と:

utmx_section("Blah"); 
var a = b; <-- will not fire
doStuff(); <-- will not fire

これを PHP で修正するのは大変でした。条件を追加するだけです。また、グローバル変数が存在するかどうかを確認するには、「ウィンドウ」を使用する必要があります。

if(window.utmx_section){
    utmx_section("Blah");
}
于 2010-06-22T18:01:07.783 に答える
2

「JavaScript の問題でブラウザが壊れますか?」というタイトルの質問に厳密に答えるために、一部の人はそうします。

次の点を考慮してください。

<script type="text/javascript">
  function doSomething() {
     //some stuff here
  }      
  for (;;) {
    doSomething();
  }

</script>

すべてのブラウザがこの種の問題を検出できるほどスマートであるとは限りません。これによりブラウザがハングアップするため、そのプロセスでキラーを実行する必要があります.

新しいブラウザはそれを検出し、ブラウザでスクリプトを強制終了できるように通知を表示しますが、私が言ったように、すべてが十分に賢いわけではありません。

あなたの質問の本文に関しては、何が問題なのかわかりません<script>utmx_section("Blah")</script>。詳細を教えていただけますか?

于 2010-06-22T13:55:55.623 に答える
0

「Cookie が使用されている場合」とはどういう意味か正確にはわかりませんが
、はい、JavaScript の一部が原因で、通常はそれ以降の JavaScript 処理が停止します。

とにかく、問題をデバッグする必要があります。Google アナリティクス コードは膨大な数のサイトで機能するため、実際には別の場所で問題が発生していると思います。コード、依存関係をどのようにコピーしたか、またはフィルタリングしている一部のコードのいずれかです。

于 2010-06-22T13:55:29.160 に答える