Ответ 1
Вы также можете использовать другое решение, предлагаемое JSLint:
return typeof i.placeholder !== 'undefined';
Это должно работать с перекрестным браузером без проблем.
Мне нужно проверить поддержку заполнителя. Следующее отлично работает во всех современных браузерах, а также IE7, IE8, IE9:
$.support.placeholder = (function () {
var i = document.createElement("input");
return "placeholder" in i;
}());
Это работает, но JSLint жалуется на использование in
:
Неожиданный 'in'. Сравните с undefined или используйте hasOwnProperty вместо этого.
Хорошо, поэтому я реорганизую его на это:
$.support.placeholder = (function () {
var i = document.createElement("input");
return i.hasOwnProperty("placeholder");
}());
Теперь это пропускает JSLint без каких-либо ошибок или предупреждений, но он разбивается на IE7 и IE8 с этим старым каштаном:
Объект не поддерживает свойство или метод 'hasOwnProperty'
Любая идея, как сделать JSLint счастливым, а также IE7 и IE8?
Вы также можете использовать другое решение, предлагаемое JSLint:
return typeof i.placeholder !== 'undefined';
Это должно работать с перекрестным браузером без проблем.
Мой ответ не будет. Не делайте JSLint счастливым. JSLint - это то, как Crockford считает, что JavaScript должен быть выполнен. Это его личный стандарт. Если вы хотите какой-то линт для JavaScript, используйте JSHint. Это разветвленная версия JSLint, которая полностью настраивается и без сумасшедших требований. С его домашней страницы:
JSHint - это вилка JSLint, инструмент, написанный и поддерживаемый Дугласом Крокфорд.
Первоначально проект начинался как попытка сделать больше настраиваемая версия JSLint - та, которая не применяет один конкретный стиль кодирования для своих пользователей, но затем преобразован в отдельный инструмент статического анализа с его собственными целями и идеалами.
Вы можете получить функцию через Object.prototype
, затем call
на элементе. Это означает, что функция доступна, и вы можете называть ее способом i.hasOwnProperty
-fashion (т.е. Значение this
за кулисами при вызове i
):
Object.prototype.hasOwnProperty.call(i, "placeholder");