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, время: 00:51. |