2012-02-02 1 views
2

Я работаю с решением, использующим JQuery, который был разработан и протестирован в IE8.JQuery и IE8, режим совместимости и эмуляция IE7

У меня есть пользователь, который «отобразил все веб-сайты в представлении совместимости» в разделе «Инструменты»> «Настройки совместимости». И часть JQuery Failed.

$(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 и выключения режима совместимости с помощью мета-тега. .. но это кажется мне грязным. Есть ли еще какие-то варианты на этом этапе, чтобы jquery работал одинаково во всех трех "версиях" IE8?

+0

У вас возникла ошибка? Что вы имеете в виду, когда говорите «неудачно»? – gilly3

+0

нет ошибки ... он просто не срабатывал – Patrick

+1

Заполнение пробелов в вашем коде, это работает в IE9 в режиме совместимости: http://jsfiddle.net/WyyUe/. Обратите внимание, что в вашем селекторе 'lnkSearch' отсутствует конечная скобка ('] '), но это может сломать ее в виде совместимости или нет, поэтому я предполагаю, что это просто опечатка. Можете ли вы опубликовать jsfiddle, где можно увидеть ошибку? – gilly3

ответ

4

Поскольку мой комментарий, казалось, решил вашу проблему, я приспосабливаю его к ответу.

Вам не нужен торцевой квадратный кронштейн (]) в вашем селекторе lnkSearch. Я бы ожидал, что это сломается в IE8 и IE9, но apparantly document.querySelectorAll() принимает его. Однако IE7 использует sizzle, так как он не поддерживает document.querySelectorAll(). Кажется, 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 - грязный бизнес.

Edit:

Согласно Microsoft, IE = край всегда должен дать вам последний движок рендеринга доступны. Исключением будет intranet pages, который должен явно использовать IE = 9, чтобы избежать режима совместимости.

+0

ok один быстрый вопрос ... что, если кто-то использует IE9, и я вставляю этот метатег ... пока он заставляет IE9 в какой-то режим совместимости IE8? и я просто догадываюсь, что IE7 даже не знает, что он существует, чтобы работать нормально? – Patrick

+0

См. Новое править выше. –

+0

спасибо за информацию +1 – Patrick