Как проверить, поддерживает ли браузер родной атрибут placeholder?
Я пытаюсь написать простой плагин-заполнитель jQuery для моего сайта, но, конечно, я хочу только запустить функцию, если родной атрибут placeholder не поддерживается...
Как я могу использовать jQuery для проверки встроенной поддержки атрибута placeholder?
Ответы
Ответ 1
Вы можете легко добавить в $.support
, вставив это в начало написанного Javascript:
jQuery.support.placeholder = (function(){
var i = document.createElement('input');
return 'placeholder' in i;
})();
Затем вы можете использовать $.support.placeholder
или jQuery.support.placeholder
в любом месте вашего кода.
NB Этот код адаптирован из diveintohtml5, ссылка, предоставленная hellvinz выше.
Ответ 2
Используйте библиотеку Modernizr, которую вы можете найти здесь: http://www.modernizr.com/
И затем сделайте следующее:
if (Modernizr.input.placeholder) {
// your placeholder text should already be visible!
} else {
// no placeholder support :(
// fall back to a scripted solution
}
Modernizr действительно удобен для тестирования поддержки браузера практически для всех функций HTML5.
Ответ 3
Мне нравится иметь такой простой класс...
var Browser = {
Can: {
Placeholder: function () {
return 'placeholder' in document.createElement('input');
}
}
}
... поэтому вы можете легко проверить, поддерживает ли ваш браузер атрибут placeholder.
if (Browser.Can.Placeholder()) {
}
Ответ 4
Свойство placeholder
существует в объектах INPUT DOM во всех браузерах независимо от того, был ли атрибут placeholder определен в элементе HTML INPUT.
Правильный способ:
var Modernizr = {};
// Create the input element for various Web Forms feature tests.
var inputElem = document.createElement('input'), attrs = {};
Modernizr.input = (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(' '));
if(!Modernizr.input.placeholder) {
// Do something.
}