Почему? Вы знаете, что сегодня требуются ES5 и WebIDL в браузерах общего пользования в Интернете. Для вашего кода требуются новые функции, как в ES5) Object.getOwnPropertyDescriptor
, get
/ set
), так и в качестве упомянутых вами объектов интерфейса WebIDL с хорошим поведением.
Полифилл HTML5 направлен на обобщение и, как правило, не реализуется. Это вредная тенденция.
Не изменяйте другие объекты. Особенно хост-объекты.
Если есть какое-либо отклонение от определения HTML5 (и оно есть), возникнут проблемы, когда второй скрипт тестирования возможностей попытается определить, есть ли свойство value
в группе радиостанций, а затем предполагает стандартную поддержку. Это далеко от двухэтапного алгоритма в HTML5.
Ваш код заполняется только в том случае, если elements.length > 0
, и также влияет на флажки (имейте в виду, что радио - не единственный элемент со свойством checked
). Ваш сеттер изменяет значение первого проверенного радио. Разве установка значения не должна проверять первое непроверенное радио с этим именем, имеющее это значение?
Вместо этого, напишите функции, которые являются настолько общими, насколько вам нужно.
function getRadioValue(form, radioName) {
// Delete comment, write code.
}
function setRadioValue(form, radioName, value) {
// Delete comment, write code.
}