Depois de escrever o post “Bug de redirecionamento de página com window.location no IE” onde falei sobre mais uma das dificuldades de se criar sites crossbrowser? Pois então, descobri mais um problema naquele mesmo (e em outros) código.
O simples código:
function MudaCBS(){
pagina = document.getElementById(”calendario”).value
self.location = pagina;
}
Gerava o seguinte erro no IE: object doesn’t support this property or method, na linha onde defini que “pagina” receberia o valor de um input chamado “calendario”.
Já sabemos que o IE tem um bug na hora de pegar achar que NAME e ID são a mesma coisa para o método getElementById mas agora, descobri esse outro problema, que graças ao Stubblog descobri a solução.
Seguindo o autor do Stubblog, o IE não consegue gerenciar variáveis globais que tenham o mesmo nome de elementos ID do DOM, especialmente se esta variável está apontando para este nó do DOM.
O que acontece é o seguinte: quando a página está sendo parseada (parsing), o IE automaticamente cria uma variável global para qualquer coisa que tenha um name ou um id.
Para resolver este problema, geralmente, basta definir a variável dentro da função, da seguinte maneira:
function MudaCBS(){
var pagina = document.getElementById(”calendario”).value
self.location = pagina;
}



