JQuery и IE8, режим совместимости и эмуляция IE7 - PullRequest
2 голосов
/ 03 февраля 2012

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

У меня есть пользователь, у которого было «Отображать все сайты в представлении совместимости» в меню «Инструменты»> «Параметры представления совместимости».И часть 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 работал одинаково во всех 3 "версиях" IE8?

Ответы [ 2 ]

4 голосов
/ 03 февраля 2012

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

В вашем lnkSearch селекторе отсутствует квадратная скобка (]). Я ожидал, что это сломается в IE8 и IE9, но, очевидно, document.querySelectorAll() принимает это. Однако IE7 использует sizzle , поскольку он не поддерживает document.querySelectorAll(). Похоже, что sizzle не нравится искаженный селектор атрибутов.

Вот тестовая страница с искаженными селекторами атрибутов . Переключитесь между режимами IE9, IE8 и IE7 и обратите внимание, что он работает в IE9 и IE8, но не работает в IE7.

Вот тестовая страница с исправленными селекторами атрибутов . Обратите внимание, что это работает во всех версиях.

2 голосов
/ 03 февраля 2012

Я использую метатег, как и HTML 5 Boilerplate и другие авторитетные источники.Но вы правы, IE - грязное дело.

Редактировать:

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

...