JavaScript: «textarea.value» не работает в IE? - PullRequest
1 голос
/ 14 апреля 2010

Несколько часов назад мне было дано указание , как стилизовать определенную текстовую область с помощью 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 ]

1 голос
/ 14 апреля 2010

Internet Explorer, javascript и разметка, к сожалению, не вписываются в одно предложение. Всегда боль писать для этого.

В любом случае для отладки вы можете попробовать, если события вызываются, вставляя alert("onblur works!"); как строки. Может быть, предупреждают о значении некоторых переменных, которые вы тестируете или изменяете.

1 голос
/ 14 апреля 2010

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

0 голосов
/ 14 апреля 2010

Работает нормально для меня. Полный нерабочий тест-кейс?

Если вы запускаете страницу из локальной файловой системы, обязательно разрешите запуск JavaScript, либо через информационную панель, включив «Разрешить запуск активного содержимого в файлах на моем компьютере», либо добавив «Метку Интернета».

Возможно, вы захотите сделать его серым только в случае пустого / defaultText.

Редактировать: ОК, это одна ужасно мерзкая страница, которую выкладывает eBay, полный сумасшедшего испорченного контента и хитрых скриптов. У него есть ErrorHandlerManager вещь, которая останавливает сообщение о вашей проблеме, а также некоторые другие ошибки скрипта на странице. Ницца.

Как ни странно, eBay, похоже, передает его в IE в виде сложных вложенных фреймов, где Firefox получает все это в одном документе. Либо это, либо причудливый способ загрузки скрипта «htmlcommentbox» приводит к тому, что ваш скрипт водяного знака запускается до того, как поле комментария добавляется на страницу, что приводит к неудачной попытке getElementById.

Я поместил window.onload= function() { ... } обертку вокруг вашего скрипта, и это заставило его работать. Я не знаю, может ли это помешать чему-либо другому на странице, потенциально используя событие window.onload (слишком много неприятных сломанных сценариев, чтобы их проверить), но если это так, всегда есть addEventListener / attachEvent.

...