1

ページの 1 つに記事のリストと、特定のキーワードに基づいてこれらをフィルター処理するオプションがある Web サイトで作業しています。すべてのキーワードはリンクであり、リストの右側にリストされています。正しい URL を取得するために、各キーワードのリンクは、指定されたキーワードに対して正しい応答を返す ajaxURL の一部を保持します。さらに、すべてのリンクに「クリック」イベントを追加し、最後の必須パラメーターを ajaxURL に追加するスクリプトを入手しました。次のように、jQuery の「ロード」関数を使用してリストを「リロード」します。

$('a.keyword').click(function(event){
    event.preventDefault();

    // Other logic

    $('.list').load(ajaxURL);
}

ただし、IE9 でフィルターを使用すると、「ajaxURL」のコンテンツがページ全体に読み込まれます。つまり、ページ全体が結果のリストに置き換えられます。これは、各リンクで取得した「クリック」イベントで「event.preventDefault()」のみを使用することの問題である可能性があると考えたため、さまざまな代替手段を追加しました。

event.stopPropagtion()
return false
if(event.preventDefault){
    event.preventDefault();
} else {
    event.returnValue = false;
}

何時間ものデバッグの後、これらのさまざまな組み合わせを試し、IE で提供されている開発者ツールを使用して IE7、IE8、および IE9 を試した後、IE9 で (開発者ツールを開かずに) 初めてページを開いたときに、説明されている問題が発生することに気付きました。その上。ただし、開発者ツールを開いてIE8を選択すると、すべて完全に機能します! IE9に戻すと同じことが起こります! (この場合、上記のすべての代替手段を使用しました。)

何らかの理由で、これらのトランジションはそれを機能させます! これを修正する方法がわかりません..ユーザーに開発者ツールを開いてモードを切り替えて動作させることはできません。:P 何かアイデアはありますか? 開発者ツールはこれを行うことができるものを追加しますか?

この問題について何か助けていただければ幸いです。:-)

PS。Chrome、++で問題なく動作します。

4

1 に答える 1

3

私が考えることができる唯一のことはconsole.log()、あなたのスクリプトにあることです。そのステートメントは、開発者ツールを開くまで、IE で Javascript エラーをスローします。

質問で提供したコードよりも前にそれが発生した場合、スクリプトの残りの部分はおそらく評価されず、イベント ハンドラーはまったくバインドされないため、リンクは通常のリンクになります。

于 2012-04-24T14:06:54.497 に答える