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!"); как строки в. Может быть, предупреждает о значении некоторых переменных, которые вы тестируете или изменяете.

Если ваш скрипт находится в верхней части страницы, скорее всего, он запущен до полной загрузки страницы. Таким образом, элемент, на который вы пытаетесь сослаться, еще не существует.

Другие вопросы по тегам