Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/08/2008, 13:45
Avatar de xenon87
xenon87
 
Fecha de Ingreso: agosto-2008
Mensajes: 26
Antigüedad: 16 años, 2 meses
Puntos: 0
javascript tras la carga de un div (alternativa)

Hola gente,
Según he leido el problema de ejecutar javascript (decentemente) en ajax es una lata.

Encontré esta solución
http://www.formatoweb.com.ar/ajax/ejecutar_codigo_javascript_css_cargado_ajax.php

el ejemplo lo he probado y funciona, aunque no pinta nada. y solo ejecuta el javascript.

Entonces he partido de ahi, y he intentado poner en mi objeto ajax, tras el estado 4 las líneas que me parecieron importantes y necesarias : (a mi parecer)

Código PHP:
var javascript=es_xml.getElementsByTagName("javascript")[0].childNodes[0].data;
                
// Creo el nuevo JS
                
var etiquetaScript=document.createElement("script");
                
document.getElementsByTagName("head")[0].appendChild(etiquetaScript);
                
etiquetaScript.text=javascript
Mi función ajax que pinta lo demás en el div es esta.
Código PHP:
function procesaAjax(ajax,capa){
    var 
capaContenedora document.getElementById(capa);
    if(
ajax.readyState==1){
            
capaContenedora.innerHTML="Cargando...";
    }else if (
ajax.readyState==4){
        if(
ajax.status==200){
            
// esto es lo nuevo
            
if(ajax.responseXML){
                
es_xml=ajax.responseXML;
                
alert(es_xml.getElementsByTagName)
                var 
javascript=es_xml.getElementsByTagName("javascript")[0].childNodes[0].data;
                
// Creo el nuevo JS
                
var etiquetaScript=document.createElement("script");
                
document.getElementsByTagName("head")[0].appendChild(etiquetaScript);
                
etiquetaScript.text=javascript;
            }
            
// fin esto es lo nuevo

            
document.getElementById(capa).innerHTML=ajax.responseText;
        }else if(
ajax.status==404){
            
capaContenedora.innerHTML "La dirección no existe";
        }else{
            
capaContenedora.innerHTML "Error: "+ajax.status;
        }
    }


Si envio al div una pagina que tiene formato xml pues ejecuta lo que está entre los comentarios "esto es lo nuevo".
Se supone que ha de recorrer el archivo xml buscando las etiquetas <javascript> para montarlas luego como <scripts> y ejecutarlos pero... el firebug me da esto cuando le envio un xml:
Código PHP:
es_xml.getElementsByTagName("javascript")[0is undefined
procesaAjax
(XMLHttpRequest"contenido_dinamico")ajax.js (línea 38)
onreadystatechange()()ajax.js (línea 72)
[Break 
on this error] var javascript=es_xml.getElementsByT...ame("javascript")[0].childNodes[0].data
Pd; He leido las FAQS antes de postear y tal.
Pd2; Toda ayuda es bien recibida (y lo que no es ayuda)

Última edición por xenon87; 27/08/2008 a las 13:50