2012-11-30 2 views
7

Я пытаюсь установить атрибут aria-autocomplete на элемент с помощью jQuery. Однако когда IE10 работает либо в Режим IE5 Quirks или Режим IE7 Стандарт вызывает ошибку Member not found.Атрибуты ARIA в IE10

<input type="textbox" id="test" />​ 
$('#test').attr({"aria-autocomplete": "list"});​ 

См. Это jsFiddle для демонстрации. Атрибуты

Я пробовал различные другие ARIA, как определено здесь:

HTML 5: The Markup Language (ARIA Edition)

Некоторые производят ту же ошибку, а другие нет.

Я не могу воспроизвести ошибку в IE9.

Это ошибка в IE10? JQuery? Или есть еще одна причина для этого, что я не понимаю?

+0

jQuery не поддерживает режим причуд. Я не уверен в стандарте IE7 в IE10. Я должен буду изучить это. –

ответ

11

Пыж,

Это известная ошибка в браузере IE10 в режиме совместимости. Пожалуйста, проголосуйте за эту ошибку, чтобы увеличить вероятность того, что она будет исправлена. https://connect.microsoft.com/IE/feedback/details/774078 Билет был отправлен командой jQuery.

Вы пробовали свой образец кода в реальном IE7? Я попробовал jsFiddle с помощью браузера (WinXP/IE7), и этот пример работал без ошибок.

Если вы использовали режим совместимости для имитации тестирования IE7, то хорошей новостью является то, что использование родного IE7 работает просто отлично. Плохая новость заключается в ошибке в режиме совместимости с IE10.

+0

Спасибо Илья. Я исправил ошибку. Я только тестировал IE7, используя инструменты IE10 dev, поэтому тогда это должно быть хорошо. –

+0

@Elijah_Manor - эта ссылка не работает. Не могли бы вы предоставить другой, чтобы я мог его продвинуть? Спасибо – johntrepreneur

+0

@johntrepreneur - ссылка не нарушена. Если вы не видите этого, вам нужно зарегистрироваться на сайте и присоединиться к программе отзывов IE. Комментарии к ошибке jQuery показывают, что вам нужно только зарегистрироваться. – BStruthers

0

Это решение для меня. В версии Jquery, которые вы используете, в моем КАС (jquery-1.7.2.js) есть один участок вокруг линии 2764, которая выглядит так:

// Use this for any attribute in IE6/7 
// This fixes almost every IE6/7 issue 
nodeHook = jQuery.valHooks.button = { 
    get: function(elem, name) { 
     var ret; 
     ret = elem.getAttributeNode(name); 
     return ret && (fixSpecified[ name ] ? ret.nodeValue !== "" : ret.specified) ? 
      ret.nodeValue : 
      undefined; 
    }, 
    set: function(elem, value, name) { 
     // Set the existing or create a new attribute node 
     var ret = elem.getAttributeNode(name); 
     if (!ret) { 
      ret = document.createAttribute(name); 
      elem.setAttributeNode(ret); 
     } 
     return (ret.nodeValue = value + ""); 
    } 
}; 

Acoording к https://bugs.jquery.com/ticket/12577, это проблема Compability в IE10 в режиме IE7. решение заключается в изменении возвращаемой переменной в заданной функции:

return (ret.nodeValue = value + ""); 
//for: 
elem.setAttribute(name, value + ""); 
return (ret.value); 
Смежные вопросы