Pegar conteúdo de DIV sem utilizar getElementById ou JQuery

Bom dia,

Estou rodando um script no IE do Windows Mobile 2003 Second Edition e aparentemente ele não suporta JQuery e nem comandos simples como getElementById e getElementsByTagName.

Alguém conhece uma forma de pegar o conteúdo de uma DIV sem utilizar o getElementById e uma forma de pegar os elementos sem utilizar getElementsByTagName?

Segue abaixo meu script:

function pegarElemento(nome) {
          var elemento = null;
          if(document.getElementById){
              elemento = [b]document.getElementById(nome)[/b];
              
          }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(url, parametros) {
        var xmlhttp;
        if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp = new XMLHttpRequest();

        } else {// code for 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 = url+"?"+paramUrl.join("&");
        xmlhttp.open("POST", urlFinal, true);
        xmlhttp.onreadystatechange = function pegarEstadoRequisicao() {
            if (xmlhttp.readyState==4 /*Concluído*/) {                
                var elemento =[b] pegarElemento("mainframe");[/b]               
                elemento.innerHTML = xmlhttp.responseText;
            }

            return xmlhttp.readyState;
        }

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

function load(callType, pKey, fcName, formName) {
        var params = {}
        params["callType"] = callType;
        params["pKey"] = pKey;
        params["fcName"] = fcName;
        
        if (formName) {
             var inputs = document.getElementsByTagName("input");
             for (var i = 0; i < inputs.length; i++) {
                    if (inputs[i].type != "submit" && inputs[i].type != "button") {
                                if (inputs[i].type == "radio" && inputs[i].type == "checkbox") {
                                    if (inputs[i].checked){
                                        params[inputs[i].name] = inputs[i].value;
                                    };
                                } else {
                                    params[inputs[i].name] = inputs[i].value;
                                };
                    };
             };
         };

         executarConteudo(url, params);
}

Qual a razão para abrir dois tópicos sobre o mesmo assunto?
http://www.guj.com.br/java/304792-browser-pode-nao-suportar-getelementbyid
Como eu disse, se você determinar o id do elemento, consegue fazê-lo.
Precisa estudar um pouco mais, sugiro o w3schools.com

Caro,

Decidi mudar o tipo de pergunta, no outro tópico peguntei se um browser poderia não suportar o getElementById, neste perguntei se poderia pegar o conteúdo de uma Div sem utilizá-lo.

Conheço o site w3schools.com, já pesquisei em diversos lugares sobre o browser que estou tendo problema e por isso recorri ao fórum.

A resposta que você me passou no post anterior não foi suficiente porque com form eu já tinha feito e funcionou, mas com a DIV não funciona.

Agradeço por ter respondido.

[quote=drsmachado]Qual a razão para abrir dois tópicos sobre o mesmo assunto?
http://www.guj.com.br/java/304792-browser-pode-nao-suportar-getelementbyid
Como eu disse, se você determinar o id do elemento, consegue fazê-lo.
Precisa estudar um pouco mais, sugiro o w3schools.com[/quote]

E como você fez? Ninguém aqui adivinha as coisas, então, se não postar a forma “como tentou”, não tem como tentarmos ajudar.

Bem, vamos ver se eu consigo me expressar melhor.

Eu tenho um menu que ao ser clicado vai chamar a função load, que por sua vez vai chamar a função executarConteudo. Quando ocorrer esta ação a função executarConteudo precisa identificar a DIV “mainframe” para escrever o novo form sem precisar atualizar a página.

Este código roda em outros borwsers, mas quando tento executar no IE do Windows Mobile 2003 Second Edition dá problema.

Tentei substituir o getElementeById pelo document.divs e pelo document.mainframe, usando como exemplo o form, mas acho que esta não deve ser a maneira correta, pois deu erro.

Bom dia,

Depois de muito sofrimento descobri que os browsers utilizados pelos coletores do meu cliente executavam o javascript de forma diferente. Em ambos os coletores não existe o getElementById, mas em um deles eu consigo acessar a div diretamente pelo nome e no outro pelo documentElement.

Para compatibilizar o código com todos os browsers criei a função abaixo:

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];
          
      } if (document.documentElement && document.documentElement.all) {
            elemento = eval("document.documentElement.all."+nome);

      } else {
          var elementoNoDocumento = eval("document."+nome);
          if (elementoNoDocumento) {
              elemento = elementoNoDocumento;
          }
      }

      if (!elemento) {
          alert("Seu browser não é capaz de exibir a página.");
      }
      
      return elemento;
};

function executarConteudo(chave, parametros) {
var xmlhttp;
if (window.XMLHttpRequest) {// code for 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 elemento = null;
    var urlFinal = chave+"?"+paramUrl.join("&");
    xmlhttp.open("POST", urlFinal, true);
    xmlhttp.onreadystatechange = function pegarEstadoRequisicao() {
        if (xmlhttp.readyState==4 /*Concluído*/) {
            elemento = pegarElemento("divmainframe");
            elemento.innerHTML = xmlhttp.responseText;
        }

        return xmlhttp.readyState;
    }

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

Resumindo:

A função “executarConteudo” chama a função “pegarElemento” que testa todas as possíveis situações e retorna a que se enquadra no browser que esta sendo utilizado.

Agradeço a todos que tentaram ajudar, mas queria só alertar ao “drsmachado” que, apesar de seu interesse em responder o fórum, a forma como o faz me pareceu muito agressiva e pode ser mal interpretada.

1 curtida