2012-02-02 12 views
2

IE8で開発され、テストされたJQueryを使用したソリューションで作業しています。JQueryとIE8、互換モード、IE7エミュレーション

[ツール]> [互換表示設定]の下にある[すべてのウェブサイトを互換表示で表示]しているユーザーがいます。そして、JQueryの一部が失敗しました。私はIE8にそれを強制しようとしているを見て、metaタグを経由して互換モードをオフにしてきた

...

$(document).ready(function() { 

    // creating named variables to represent the throbber objects to make life easier later. 
    var moSearchThrobber = $("#imgSearchThrobber"); 
    var moFilterThrobber = $("#imgFilterThrobber"); 

    //lets hide the search and filter dialogs. 
    $("div[id*=pnlSearch_Dialog]").hide(); 
    $("div[id*=pnlFilter_Dialog]").hide(); 

    // when I change the value of my drop downs in search and in filter, set the hidden field value. 
    $("select[name=ddlValue]").change(function() { 
     $(this).siblings("input:hidden").val($(this).val()); 
    }); 
    // If the user clicks on the Search link button. 
    $("a[id*=lnkSearch").click(function() { 

     // while we are at it turn on the search throbber 
     moSearchThrobber.css('visibility', 'visible'); 

     // find the search grid and get/each through all the rows. 
     $("table[id*=grdSearch]").find("tr").each(function() { 

非表示機能が動作し...しかし、クリックの方法は、発射に失敗しました。 ..しかし、それは私には汚いと感じます。この時点でIE8の3つの「バージョン」すべてでjqueryを同じにするオプションはありますか?

+0

エラーが表示されますか?それが「失敗した」と言ったらどういう意味ですか? – gilly3

+0

エラーはありません...それは火災を起こしませんでした – Patrick

+1

コード内の空白を埋めて、これはIE9の互換性ビューで動作します:http://jsfiddle.net/WyyUe/。あなたの 'lnkSearch'セレクタには終わり括弧(') 'がありませんが、それは互換性のあるビューであろうとなかろうと、それを壊すことになるので、それは単にタイプミスです。あなたのバグが見える場所にjsfiddleを投稿できますか? – gilly3

答えて

4

私のコメントはあなたの問題を解決するように思われたので、私はそれを答えに適応させています。

お客様のlnkSearchセレクタに、終了角括弧(])がありません。私はそれがIE8とIE9で壊れることを期待していただろうが、確かにdocument.querySelectorAll()がそれを受け入れる。ただし、IE7はdocument.querySelectorAll()をサポートしていないため、sizzleを使用します。 sizzleは不正な属性セレクタが気に入らないようです。

ここにはtest page with malformed attribute selectorsがあります。 IE9、IE8、IE7のモードを切り替え、IE9とIE8では動作するが、IE7では動作しないことに注意してください。

ここにはtest page with corrected attribute selectorsがあります。すべてのバージョンで動作することに注意してください。

+0

はい...私の問題を解決しました。追加情報は+1です。 – Patrick

2

HTML 5 Boilerplateや他の評判の良い情報源と同様に、私はメタタグを使用します。しかし、あなたは正しい、IEは汚れたビジネスです。

編集:

Microsoftによると、IE =エッジは常にあなたに利用できる最新のレンダリングエンジンを与える必要があります。例外は互換モードを避けるためにIE = 9を明示的に使用する必要があるintranet pagesです。

+0

大丈夫な質問...誰かがIE9を使用していて、そのメタタグを入れたら... IE9をIE8の互換モードにする必要がありますか?私はちょうどIE7 doesntがそれが存在することを知っていることを推測しているので、うまくいくでしょうか? – Patrick

+0

上記の新しい編集をご覧ください。 –

+0

ありがとうございます+1 – Patrick

関連する問題