JavaScript: "textarea.value" не работает в IE?
Несколько часов назад меня проинструктировали, как оформить конкретную текстовую область с помощью JS. Следующий фрагмент кода (спасибо еще раз, Марио Менгер) работает как шарм в Firefox, но, к сожалению, ничего не происходит в Internet Explorer (7 протестировано только до сих пор).
var foo = document.getElementById('HCB_textarea');
var defaultText = 'Your message here';
foo.value = defaultText;
foo.style.color = '#888';
foo.onfocus = function(){
foo.style.color = '#000';
if ( foo.value == defaultText ) {
foo.value = '';
}
};
foo.onblur = function(){
foo.style.color = '#888';
if ( foo.value == '' ) {
foo.value = defaultText;
}
};
Я уже пытался заменить 'value' на 'innerHTML' (только для IE), но безрезультатно. Какие-либо предложения? ТИА
3 ответа
У меня отлично работает. Полный нерабочий тест-кейс?
Если вы запускаете страницу из локальной файловой системы, обязательно разрешите запуск JavaScript, либо через информационную панель, включив "Разрешить запуск активного содержимого в файлах на моем компьютере", либо добавив "Метку Интернета".
Вы также можете сделать его серым только в случае пустого /defaultText.
Редактировать: ОК, это одна из самых гнусных страниц, которые выкладывает eBay, полный сумасшедшего испорченного контента и хитрых скриптов. Имеет ErrorHandlerManager
вещь, которая останавливает сообщение о вашей проблеме, а также некоторые другие ошибки скрипта на странице. Ницца.
Как ни странно, eBay, похоже, передает его в IE в виде сложных вложенных фреймов, где Firefox получает все это в одном документе. Либо это, либо причудливый способ загрузки скрипта htmlcommentbox приводит к тому, что ваш скрипт водяного знака запускается до того, как поле комментария добавляется на страницу, вызывая попытку getElementById
терпеть неудачу.
Я положил window.onload= function() { ... }
обертка вокруг вашего скрипта, и это заставило его работать. Я не знаю, может ли это помешать чему-либо другому на странице, потенциально используя window.onload
Хотя это событие (слишком много неприятных сломанных сценариев, чтобы их проверить), но если так, то всегда addEventListener
/attachEvent
,
Internet Explorer, javascript и разметка, к сожалению, не вписываются в одно предложение. Всегда боль писать для этого.
В любом случае для отладки вы можете попытаться вызвать события, поставив alert("onblur works!");
как строки в. Может быть, предупреждает о значении некоторых переменных, которые вы тестируете или изменяете.
Если ваш скрипт находится в верхней части страницы, скорее всего, он запущен до полной загрузки страницы. Таким образом, элемент, на который вы пытаетесь сослаться, еще не существует.