tldr:
Почему (заполнитель в inputElemnt) равен true в IE8, несмотря на отсутствие встроенной поддержки атрибута заполнителя? Не является ли (атрибут в элементе) хорошим способом проверки нативной поддержки? Библиотека Javascript Modernizer использует его.
Long:
У меня есть небольшой плагин Jquery с именем Defaultvalue (http://unwrongest.com/projects/defaultvalue/). У меня есть небольшой плагин Jquery с именем Placeholder (https://github.com/janjarfalk/jquery.placeholder.js). В основном это запасной вариант для атрибута-заполнителя HTML5.
В недавно обновленном я добавил эти три строки кода. Надеемся, что Defaultvalue не запустится, если в браузере будет встроенная поддержка атрибута placeholder.
if('placeholder' in this){
// this is an input-element
return false;
}
Кажется, он работает в большинстве браузеров, кроме IE8 и IE7. По какой-то причине он находит ключевой «заполнитель» в этом, но я думаю, что нет никакой поддержки атрибута заполнителя в IE7 / IE8.
Мой код был вдохновлен этим кодом в библиотеке Javascript Modernizer (http://www.modernizr.com/).
(function(props) {
for (var i = 0, len = props.length; i < len; i++) {
attrs[ props[i] ] = !!(props[i] in inputElem);
}
return attrs;
})('autocomplete autofocus list placeholder max min multiple pattern required step'.split(' '));
Чего мне не хватает?