Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Fala povo!Estou com um problemão... o conteúdo de um arquivo HTML (parte1) é carregado em um div (conteudo)... mas eu preciso que dentro deste div execute um js.Se eu colocar no body onload do HTML principal (index) não funfa, pois o ajax não recarrega a página.Tentei no Ajax e deu certo, mas o problema mesmo é que o debugger do IE acusa como um erro, pois a camada não existe no Index, apenas no Parte1.Pois no js tem "document.getElementById('conteudo').onload = funcao();" e nesta funcao() ele cita divs que só existem no arquivo Parte1... então dá um erro de "Objeto Necessário".Putz, não consigo explicar direito... mas o fato é que o debugger do IE acusa um erro que não existe!Tem um jeito de fazê-lo não acusar este "erro"?PS: Agora que eu vi que já tem um sub-forum de Ajax... se algum modera puder, mova-o para lá
É.. o void não reolveu..
O problema não é necessariamente omitir o erro... mas uma forma de executar o javascript sem dar este erro...
O ajax está assim:
if ((xmlhttp.readyState == 4) && (xmlhttp.status == 200)) document.getElementById("conteudo").innerHTML =xmlhttp.responseText; document.getElementById("conteudo").onload = funcao();
Mas a função que executa quando o conteúdo é carregado contém um getElementByID("div") cujo div não existe no index, apenas no html do conteúdo...
funcao(); está declarada onde? no index ou html carregado?
Ou então um jeito de colocar o onload em algum lugar do html Conteudo, já que o body onload não funfa...No <head> do index...
Não sei se vai funcionar mas vamos tentar né!? Afinal o assunto é novo pra todo mundo aqui.
Na sua página trazida pelo AJAX, coloca assim no final do código:
<script>funcao();</script>
No seu código AJAX. você modifica:
if(ajax.readyState == 4) { // Quando estiver tudo pronto. if(ajax.status == 200) { var resultado = ajax.responseText; // Coloca o resultado (da busca) retornado pelo Ajax nessa variável (var resultado). resultado = resultado.replace(/\+/g," "); // Resolve o problema dos acentos resultado = unescape(resultado); // Resolve o problema dos acentos tag = 'script'; initSub = resultado.indexOf('<'+tag+'>'); initTagLen = tag.length+2; finiSub = resultado.indexOf('</'+tag+'>'); myScript = resultado.substring(initSub+initTagLen,finiSub); eval(myScript); document.getElementById('minhaDiv').innerHTML = resultado.substring(0,initSub); } else { document.getElementById('minhaDiv').innerHTML = "Erro: "; } }
Faça a adaptação do nome da div.
E aí Fleury.Infelizmente não deu certo... mas agradeço sua boa vontade.Consegui fazendo uma gambiarra... o problema era o seguinte: o debugger do IE acusa um erro de "Objeto Necessário", porque a função citava uma div que só existia no arquivo do conteúdo, e não no index.O que eu fiz foi colocar este div no Index e ocultá-lo.Gambiarra... mas foi a única solução para este bug...
Atualmente estamos trabalhando com pgs onde até 3 divs são sobrepostos, sendo todos em ajax, com pesquisa de dados, inserção, sem reflesh algum.Todos os JS devem ficar na pg principal. Os div chamam as funções inclusas nesta pg. Uilizamos o Cpaint.Abraço
Obrigado pela diga... mas o problema não é executar os javascripts que estão na página principal, isso está funcionando perfeitamente!O problema não é nada relacionado a funcionalidade, é só um caso de interpretação dos debuggers.
Porque você não deixa a div criada, e ao executar o ajax você remove a div criada.
boa idéia! ;)
Acho que não dá para omitir erros...
Mas tente algo assim:
try { lalala.divInterna.comando = lalala;} catch (e) { void(0);}