A ver. Os pongo un ejemplo. Es lo más sencillo que he podido hacer que ilustra mi problema.
Está compuesto de 3 archivos:
El ej.html es la página que tiene todo el contenido:
Código:
<html>
<head></head>
<body>
<script type="text/javascript" src="func.js"></script>
<a onClick="ajaxLink()">Aqui</a>
<div id="Content">
</div>
</body>
</html>
Como veis solo tiene un texto y un div que va a contener lo que nos devuelva la petición que haremos a través de AJAX.
El segundo fichero es ej2.html que contiene lo que se insertará en el div de la página anterior
Código:
<script type="javascript">
function enlace() {
alert("Hola");
}
</script>
<a onClick="hola();">Hola</a>
Y por último func.js con todo el javascript
:
Código:
function myGetElementById(e) {
if(document.getElementById) e=document.getElementById(e);
else if(document.all) e=document.all[e];
else e=null;
return e;
}
function ajaxLink() {
var request;
if (window.XMLHttpRequest) { // Mozilla, Safari, ...
request = new XMLHttpRequest();
// http_request.overrideMimeType('text/xml');
} else if (window.ActiveXObject) { // IE
request = new ActiveXObject("Microsoft.XMLHTTP");
}
request.open('GET', "ej2.html", true);
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
request.send(null);
request.onreadystatechange = function () {
if (request.readyState == 4) {
// Mostramos el contenido
myGetElementById('Content').innerHTML = request.responseText;
} else if (request.readyState == 1) {
myGetElementById('Content').innerHTML = "Cargando";
}
}
}
El problema está en la línea en negrilla en la que se cambia el contenido del div. Al cambiar solo el innerHTML no se llega a ejecutar en ningún momento el código javascript que contenga la página objetivo. He probado llamando a eval y el código se ejecuta pero las funciones no quedan definidas
¿Hay alguna manera de evaluarlo como si hubiese estado ahi desde un principio?