Есть причина для беспокойства. Со временем ожидается, что все браузеры будут поддерживать атрибут placeholder. В настоящее время только несколько браузеров не поддерживают его (, что наиболее важно, IE 9 и ниже, а также браузер Android ). Так что, в конце концов, ваш запасной код-заполнитель станет ненужным. Если вы отправите веб-сайт с использованием сценария для всех браузеров, через несколько лет он станет совершенно ненужным.
Вместо этого, используя функцию обнаружения для возврата к решению JavaScript только при необходимости:
- Нет необходимости запускать немного кода JavaScript в браузерах, которые уже поддерживают атрибут placeholder.
- Вы можете загружать резервный скрипт только при необходимости, сохраняя несколько байтов.
Это то, что библиотеки, такие как Modernizr и yepnope.js (включены в Modernizr), уже делают. Я бы рекомендовал использовать Modernizr и извлечь заполнитель polyfill в placeholder-polyfill.js
файл, чтобы ваш код мог выглядеть так:
Modernizr.load({
test: Modernizr.placeholder,
nope: 'placeholder-polyfill.js'
});
Если вы просто хотите yepnope.js и запускаете свои собственные функции обнаружения функций:
yepnope({
test: hasPlaceholderSupport(),
nope: 'placeholder-polyfill.js'
});
Таким образом, вы экономите загрузку ресурсов и повышаете производительность для большинства браузеров. В будущем все браузеры просто пройдут тест, улучшая производительность. Затем вы можете просто удалить вызов yepnope.js / Modernizr.
Для меня это скорее образ мыслей о том, как защитить свой код от будущего, и при этом уже использовать возможности современных браузеров.