TL;DR: Почему ( "placeholder" in inputElemnt) равно true в IE8, несмотря на отсутствие встроенной поддержки атрибута placeholder? Разве нет (атрибут в элементе) хороший способ проверить встроенную поддержку? Модернизатор библиотеки JavaScript использует его.
Long
У меня есть небольшой плагин Jquery с именем Defaultvalue (http://unwrongest.com/projects/defaultvalue/). У меня есть небольшой плагин JQuery под названием Placeholder (https://github.com/janjarfalk/jquery.placeholder.js). Это в основном откат для атрибута placeholder HTML5.
В обновленном обновлении я добавил эти три строки кода. Надеясь, что Defaultvalue не будет работать, если браузер имеет встроенную поддержку атрибута placeholder.
if('placeholder' in this){ // this is an input-element return false; }
Кажется, он работает в большинстве браузеров, кроме IE8 и IE7. По какой-то причине он находит ключ "placeholder" в этом, но нет, я думаю, никакой поддержки атрибута placeholder в 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(' '));
Что мне не хватает?