Pergunta

Atualmente, estou escrevendo um site da web que deve ser compatível com todos os navegadores, incluindo o IE voltar para a versão 6.

Eu estava me perguntando sobre problemas de compatibilidade com esses dois eventos em especial:Eu estou usando-os com uma <input> tag com type='text'.

  • OnBlur
  • OnChange

A pesquisa tem encontrado respostas mistas e uma lista incompleta.

Especificamente, a questão é:

  • Existem problemas conhecidos com o acima de dois eventos (poderia ser expandido a outros HTML eventos)?
  • Se sim, quais métodos podem ser usados para contornar esses problemas?

Bem-vindo :)

Foi útil?

Solução

Todos os navegadores devem oferecer suporte a esses eventos muito decentemente, se você está apenas usando-os em caixas de texto.Se você verificar o QuirksMode evento tabelas de compatibilidade, você vai ver que o IE tem alguns problemas com o evento de alteração de botões de opção e caixas de verificação.

Se você não está muito familiarizado com os eventos do JavaScript em navegadores, você vai descobrir que o modelo de eventos é uma bagunça graças ao fato de que o IE decidiu fazer as coisas de forma diferente do padrão.Para superar este problema, você deve estar usando um framework JavaScript como jQuery, YUI, Dojo, MooTools, Igor, ou Encerramento.Estes quadros de suavizar as diferenças, então você vai (quase) nunca terá que lidar com as diferenças & bugs em navegadores diferentes.Há um ótimo artigo sobre CodingHorror explicando por que você deve considerar o uso de um framework de JavaScript, se você planeja usar o JavaScript no seu site que você deve ler se você está curioso para por você deve usar um framework JavaScript.

Também, se você não estiver familiarizado com o navegador de eventos totalmente, certifique-se de que você compreender a diferença entre onchange e onblur.

Outras dicas

Eu acredito que não há mais problema com esses dois eventos específicos do que com todos os eventos no Internet Explorer plus o costume estranho peculiaridades, tais como este.

A solução geral para manipulação de eventos e MUITOS outros problemas é a utilização de um framework de Javascript, cujos desenvolvedores têm derramou seu próprio sangue para salvar a sua, papering sobre todo o IE (e alguns outros) weirdnesses, tais como dojo.Como o Dojo gente dizer em que página:

A palavra "suporte" significa algo muito específico para o Dojo e Dijit, em que dizer que o Dojo de Núcleo e Dijit o apoio de um navegador significa que 100% dos a funcionalidade disponível obras, que a acessibilidade é tratada corretamente, e que todas as internacionalização e localização é suportado.Este é um muito alta bar, o que significa também que, enquanto nós não pode dizer que navegadores como o Ópera são "suportados" para Dijit, é altamente provável que todos os trabalhos lá também, mas pode haver alguns ressalva de que nós não éramos capazes de trabalhar em torno de (tais como a acessibilidade gancho O Opera).

Os navegadores que eles reivindicam como "suporte" no alto da barra de nível (como de Dojo 1.3.2) o IE 6 para 8, Safari 3.1 a 4, o Firefox 2 para 3,5, Chrome 1 para 2 (núcleo de funcionalidades, incluindo a manipulação de eventos, também funciona no Opera, Konqueror, FF 1.5, ...).

Se você usar o jQuery, tente isso:

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

$("input:text") se você deseja segmentar todos os campos de entrada de texto.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top