Browser pode não suportar getElementById?

3 respostas
I

Boa tarde,

Gostaria de saber se é possível um browser não conseguir executar o getElementById, pois estou tentando rodar um script em um browser do Windows Mobile 2003 Second Edition e a execução é interrompida justamente na chamada deste método.

Utilizei o script abaixo para fazer uns testes e sempre é levantado o alerta, não passou por nenhuma das opções.

var elemento = null;
if(document.getElementById){
              elemento = document.getElementById(nome);
              
}else if(document.all){
              elemento = document.all[nome];
              
}else if(document.layers){
              elemento = document.layers[nome];
              
}else{
              alert("Seu browser não é capaz de exibir a página.");
}
          
elemento;

Segue abaixo o meu script:

function pegarElemento(nome) {
          var elemento = null;
          if(document.getElementById){
              elemento = document.getElementById(nome);
              
          }else if(document.all){
              elemento = document.all[nome];
              
          }else if(document.layers){
              elemento = document.layers[nome];
              
          }else{
              alert("Seu browser não é capaz de exibir a página.");
          }
          
          return elemento;
};

function executarConteudo(chave, parametros) {
        var xmlhttp;
        if (window.XMLHttpRequest) {// Código para IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp = new XMLHttpRequest();

        } else {// código para IE6, IE5
            try {
                //If the Javascript version is greater than 5.
                xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
                
            } catch (e) {
                //If not, then use the older active x object.
                try {
                    //If we are using MS.
                    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
                    
                } catch (E) {
                    //Else we must be using a non-IE browser.
                    xmlhttp = false;
                }
            }
        }
        
        if (!xmlhttp) {
            throw new Error("Problema na inicialização");
        }

        var paramUrl = [];
        for (var name in parametros) {
            paramUrl.push(name+"="+parametros[name]);
        }

        var urlFinal = chave+"?"+paramUrl.join("&");
        xmlhttp.open("POST", urlFinal, true);
        xmlhttp.onreadystatechange = function pegarEstadoRequisicao() {
            if (xmlhttp.readyState==4 /*Concluído*/) {
                var elemento = pegarElemento("mainframe");
                elemento.innerHTML = xmlhttp.responseText;
            }

            return xmlhttp.readyState;
        }

        xmlhttp.send(paramUrl.join("&"));
};

3 Respostas

drsmachado

Se o erro está gerando a exceção, provavelmente não suporta. Por que razões, não sei.
Agora, veja que você pode acessar o elemento sem ser por DOM.

<html>
<form>
<input type="text" name="teste" id="teste"/>
</form>
</html>

O campo de texto acima pode ser acessado com

document.forms[0].teste
I

Oi drsMachado,

Preciso acessar uma Div para alterar o conteúdo. Eu tenho como fazer isso diretamente, assim como é feito com o form?

Obrigada pela ajuda.

I

Oi drsMachado,

Preciso acessar uma Div para alterar o conteúdo. Eu tenho como fazer isso diretamente, assim como é feito com o form?

Obrigada pela ajuda.

drsmachado:
Se o erro está gerando a exceção, provavelmente não suporta. Por que razões, não sei.
Agora, veja que você pode acessar o elemento sem ser por DOM.

&lt;html&gt;
&lt;form&gt;
&lt;input type="text" name="teste" id="teste"/&gt;
&lt;/form&gt;
&lt;/html&gt;

O campo de texto acima pode ser acessado com

document.forms[0].teste

Criado 23 de setembro de 2013
Ultima resposta 23 de set. de 2013
Respostas 3
Participantes 2