Сегодня я обнаружил странное поведение в реализации IE8 свойства «параметров» JavaScript элемента выбора DOM.
С учетом следующего HTML:
<select id="sel"><option value="val">An option</option></select>
И JavaScript:
var sel = document.getElementById('sel');
alert(sel === sel.options); //alerts 'true' in IE8
Очевидно, умный сотрудник, пишущий реализацию select на IE8, написал индексатор на элементе select, а затем предоставил JavaScript в качестве своего собственного свойства 'options'.
Мой вопрос : это ожидаемая функциональность, согласно спецификации языка JavaScript? Это известная ошибка? Должен ли я продолжать обрабатывать свойство 'options' как объект, а не как массив?
Это не то, как элемент select DOM ведет себя в Firefox 3.5, Chrome 1.0 или Safari 3.1, где свойство 'options' представлено в виде массива JavaScript ...
Для справки, я столкнулся с этим, когда передал свойство 'options' конструктору jQuery, чтобы обернуть его элементы. Вместо ожидаемого результата объекта jQuery с элементами X (как это было сделано с использованием Firefox, Chrome и Safari) мне был возвращен объект jQuery с 1 элементом (сам элемент select).