placeholder под IE
Собственно хочу организовать поддержку placeholderа на IE9 и ранее.
Имеется следующие функции:
function gt(obj) {
var res = [],
temp = null;
for(var i = 1; i < arguments.length; i++) {
temp = obj.getElementsByTagName(arguments[i]);
for(var j = 0; j < temp.length; j++)
res.push(temp[j]);
}
return res;
}
function placeholder() {
if(!("placeholder" in document.createElement("INPUT"))) {
var inputs = gt(document, "INPUT", "TEXTAREA");
for(var i = 0; i < inputs.length; i++)
if(inputs[i].getAttribute("placeholder")) {
var pholder = inputs[i].getAttribute("placeholder");
if(inputs[i].nodeName == "INPUT") {
inputs[i].value = pholder;
inputs[i].onfocus = function(){this.value = "";};
inputs[i].onblur = function(){this.value = pholder;};
}
else if(inputs[i].nodeName == "TEXTAREA") {
if(inputs[i].childNodes[0]) inputs[i].childNodes[0].nodeValue = pholder;
else inputs[i].appendChild(document.createTextNode(pholder));
inputs[i].onfocus = function(){this.childNodes[0].nodeValue = "";};
inputs[i].onblur = function(){this.childNodes[0].nodeValue = pholder;};
}
}
}
}
Проблема в том, что всем инпут- и текстареа- элементам в DOM на событие onblur он привязывает placeholder одного из этих элементов. В результате, при снятии фокуса с любого из полей полей парсится одно и того же значение. Ошибка где-то в логике, а понять не могу. |
mixtape,
... потому что переменная в строке 16 содежит последнее присвоенное значение ... когда функция в строке 20 или 26 обратится к этой переменной ... вариант 20 строки ...
inputs[i].onblur = (function(a){return function(){this.value = a}})(pholder);
подробнее тут http://javascript.ru/basic/closure#p...-ispolzovaniya |
На всякий случай https://github.com/jamesallardice/Placeholders.js
|
Цитата:
Невтему. Делал локальную рассылку и оказалось что Ишак не понимает тегов figure. Ну то есть Аутлук Экспресс, который парсит хтмл через ишака (причем и в темп валит все как браузер). Переделал на div и вспомнил что на фигурах у меня и галереи сделаны. Открыл в ИЕ - так и есть - ну хотя бы он их как div мог бы понять. Нет, походу как span рендерит. Короче все развалилось. И тут я подумал что если вот так вот работать - на "и ранее", то получится как у той хрестоматийной помещицы: крепостные ставят на полки в подвалах свежее варенье и соленье, а баре хавают старое, поза-прошлогоднее, поскольку осталось и выкинуть ей было жалко. Поддержка старья работает против вас и против всех. Не поддерживайте старье, кладите на маргиналов и народ быстрее будет обновлять свои ржавые браузеры на менее ржавые. Метафорически Ишаку шестому сноса бы не было, если бы не менялись каждый год спецификации. Ну и хрен на него - нужен новый. А будете поддерживать старье - зачем тогда народу обновляться. Веб-дизайнер же все наладил. А вам эта гнилая работа зачем? |
Кстати, старые сайты симметрично страдают. Я как-то зашел на сайт одной моднейшей конторы, так у них еще апплеты сохранились. Которые ежу понятно нифига не пахали.
ЗЫ У меня ишак номер 8, потому что винда - ХР. Новые на нее не встают, это МС- префикс как известно, чтобы их глюкавые новые винды покупали. Но, браузер это не ОС и даже не Фотошоп. Скачать и поставить новый, хотя бы хром - минутное дело. ЗЫЫ Конечно, у них тоже префиксы, мать их за ногу. У ФФ кнопка обновить переехала направо, это специально делается чтобы привыкали и в другом браузере было некофортно. Главное меню у Винды почему кверху жопой? Ну то есть внизу, в то время как у всех программ (а ОС тоже программа) оно вверху? ЧТобы привыкали и испытывали баттхерт на какой-нить макоси не приведи господь. |
| Часовой пояс GMT +3, время: 06:03. |