De momento lo tengo medio resuelto. En el head creo un div con id "globalHeadDeclaraciones" a cada respuesta que obtengo de AJAX le paso esta funcion
Código:
function launchJavascript(responseText) {
ScriptFragment = '(?:<script type="text/javascript" src=")((\n|.)*?)(?:">)';
var match = new RegExp(ScriptFragment, 'img');
var scripts = responseText.match(match);
// Limpiamos la zona de declaraciones
while (myGetElementById('globalHeadDeclaraciones').hasChildNodes())
myGetElementById('globalHeadDeclaraciones').removeChild(myGetElementById('globalHeadDeclaraciones').firstChild);
// hacemos las declaraciones que correspondan a la página en cuestión
if(scripts) {
var js = '';
for(var s = 0; s < scripts.length; s++) {
match = new RegExp(ScriptFragment, 'im');
scr = document.createElement('script');
scr.type = "text/javascript";
scr.src = scripts[s].match(match)[1];
myGetElementById('globalHeadDeclaraciones').appendChild(scr);
}
}
var ScriptFragment = '(?:<script.*?>)((\n|.)*?)(?:</script>)';
var match = new RegExp(ScriptFragment, 'img');
var scripts = responseText.match(match);
if(scripts) {
var js = '';
for(var s = 0; s < scripts.length; s++) {
var match = new RegExp(ScriptFragment, 'im');
js += scripts[s].match(match)[1];
}
eval(js);
}
}
El problema que tengo es que si hay dos declaraciones de archivos con javascript externos solamente me tiene en cuenta una. ¿Alguien sabe porque?