Elementos de script e execução de eventos

O modo de Padrões do IE9 introduz o evento load baseado em padrões interoperável para elementos script. As versões anteriores do Windows Internet Explorer davam suporte apenas ao evento não interoperável onreadystatechange para elementos script.

Para compatibilidade com sites já existentes, o evento onreadystatechange ainda tem suporte no modo do IE9. No entanto, os sites que se registram para ambos os eventos agora terão dois callbacks, enquanto nas versões anteriores do Internet Explorer havia apenas um.

Normalmente, esses eventos são usados ​​para executar a funcionalidade em um momento posterior, para não bloquear o carregamento da página. Nestes casos, a falta de detecção de recurso (para registro de onreadystatechange e load) pode fazer com que o callback seja executado duas vezes. Isso geralmente resulta em erros de script ou funcionalidade de página danificada.

O evento baseado em padrões load é o evento recomendado para estes cenários e deve ser usados ​sempre que possível. Os desenvolvedores da Web devem usar a detecção de recurso para detectar navegadores que dão suporte ao evento load para elementos script. Em versões herdadas do Internet Explorer, o script deve usar onreadystatechange.

O exemplo de código a seguir demonstra um padrão de código incorreto.

s = document.createElement("script");
s.src="readystate.js";
s.onreadystatechange = callback; //Legacy IE
s.onload = callback; //Other browsers
document.body.appendChild(s);
function callback() { console.log("loaded"); }

O exemplo de código a seguir demonstra o padrão recomendado.

s = document.createElement("script");
s.src="myscript.js";
if(s.addEventListener) {
  s.addEventListener("load",callback,false);
} 
else if(s.readyState) {
  s.onreadystatechange = callback;
}
document.body.appendChild(s);
function callback() { console.log("loaded"); }

Tópicos relacionados

 

 

Mostrar:
© 2014 Microsoft