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;
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;
}
}
}
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")[0] is 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;
Pd2; Toda ayuda es bien recibida (y lo que no es ayuda)