совместимость html onchange / onblur - PullRequest
3 голосов
/ 07 октября 2009

В настоящее время я пишу веб-сайт, который должен быть совместим со всеми браузерами, включая IE, до версии 6.

Мне было интересно узнать о проблемах совместимости, в частности, с этими двумя событиями: Я использую их с тегом <input> с type='text'.

  • ONBLUR
  • OnChange

При поиске были обнаружены смешанные ответы и неполный список.

В частности, вопрос:

  • Есть ли какие-либо известные проблемы с двумя вышеуказанными событиями (могут быть расширены до других событий HTML)?
  • Если да, то какие методы можно использовать для решения этих проблем?

Любая помощь высоко ценится:)

Ответы [ 3 ]

9 голосов
/ 07 октября 2009

Все браузеры должны поддерживать эти события довольно прилично, если вы используете их только в текстовых полях. Если вы посмотрите таблицы совместимости событий QuirksMode , вы увидите, что IE имеет некоторые проблемы с событием изменения в переключателях и флажках.

Если вы не очень знакомы с событиями JavaScript в браузерах, вы обнаружите, что модель событий является беспорядком, благодаря тому, что IE решил сделать что-то не так, как стандарт. Чтобы преодолеть эту проблему, вы должны использовать JavaScript-фреймворк , например jQuery , YUI , Dojo , MooTools, ExtJS или Закрытие . Эти структуры сглаживают различия, поэтому вам (почти) никогда не придется иметь дело с различиями и ошибками в разных браузерах. Есть отличная статья о CodingHorror , объясняющая, почему вы должны рассмотреть возможность использования инфраструктуры JavaScript, если вы планируете использовать JavaScript на своем сайте, которую вы должны прочитать, если вам интересно, почему вы следует использовать JavaScript-фреймворк.

Также, если вы не знакомы с событиями браузера полностью, убедитесь, что вы понимаете разницу между onchange и onblur .

1 голос
/ 07 октября 2009

Я считаю, что нет никаких проблем с этими двумя конкретными событиями, чем со всеми событиями в Internet Explorer плюс обычные странные причуды, такие как этот .

Общее решение для обработки событий и МНОГИХ других проблем состоит в том, чтобы использовать Javascript-фреймворк, разработчики которого взяли на себя ответственность за спасение вашей, скрывая все IE (и некоторые другие) странности, такие как dojo . Как говорят на этой странице люди из Додзё:

Слово "поддержка" означает что-то очень специфично для додзё и диджита, в что говорят что додзё ядро ​​и диджит поддержка браузера означает, что 100% работает доступный функционал, эта доступность обрабатывается правильно, и это все интернационализация и локализация поддерживается. Это очень высокий бар, что также означает, что в то время как мы может не сказать, что браузерам нравится Опера "поддерживается" для Dijit, это весьма вероятно, что все это будет работать там тоже, но могут быть некоторые предостережение, с которым мы не смогли работать вокруг (например, доступность зацепить Opera).

Браузеры, которые, как они заявляют, «поддерживаются» на этом уровне очень высокого уровня, (от Dojo 1.3.2) - это IE 6–8, Safari 3,1–4, Firefox 2–3,5, Chrome 1–2 (базовая функциональность). , включая обработку событий, также работает в Opera, Konqueror, FF 1.5, ...).

0 голосов
/ 07 октября 2009

Если вы используете jQuery, попробуйте это:

$('input.text').click(function () {
        if (this.value == this.defaultValue) {
            this.value = '';
        }
    });
    $('input.text').blur(function () {
        if (this.value === '') {
            this.value = this.defaultValue;
        }
    });

$("input:text"), если вы хотите настроить таргетинг на все поля ввода текста.

...