04/03/2009, 17:47
|
| | Fecha de Ingreso: febrero-2009
Mensajes: 16
Antigüedad: 15 años, 9 meses Puntos: 0 | |
Respuesta: Al no loguear como devolver el foco...? Hola de nuevo. No hay manera. Os envio el código entero a ver si me echáis una mano...
<script language="javascript">
var tagScript = '(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)';
/**
* Eval script fragment
* @return String
*/
String.prototype.evalScript = function()
{
return (this.match(new RegExp(tagScript, 'img')) || []).evalScript();
};
/**
* strip script fragment
* @return String
*/
String.prototype.stripScript = function()
{
return this.replace(new RegExp(tagScript, 'img'), '');
};
/**
* extract script fragment
* @return String
*/
String.prototype.extractScript = function()
{
var matchAll = new RegExp(tagScript, 'img');
return (this.match(matchAll) || []);
};
/**
* Eval scripts
* @return String
*/
Array.prototype.evalScript = function(extracted)
{
var s=this.map(function(sr){
var sc=(sr.match(new RegExp(tagScript, 'im')) || ['', ''])[1];
if(window.execScript){
window.execScript(sc);
}
else
{
window.setTimeout(sc,0);
}
});
return true;
};
/**
* Map array elements
* @param {Function} fun
* @return Function
*/
Array.prototype.map = function(fun)
{
if(typeof fun!=="function"){return false;}
var i = 0, l = this.length;
for(i=0;i<l;i++)
{
fun(this[i]);
}
return true;
};
var peticion = false;
try {
peticion = new XMLHttpRequest();
} catch (trymicrosoft) {
try {
peticion = new ActiveXObject("Msxml2.XMLHTTP");
} catch (othermicrosoft) {
try {
peticion = new ActiveXObject("Microsoft.XMLHTTP");
} catch (failed) {
peticion = false;
}
}
}
if (!peticion) alert("Error al inicializar!");
function cargarFragmento(fragment_url, element_id) {
var element = document.getElementById(element_id);
element.innerHTML = '<p><img src="Imagenes/ajax_loading.gif" /></p>';
peticion.open("GET", fragment_url);
peticion.onreadystatechange = function() {
if (peticion.readyState == 4 && peticion.status==200) {
element.innerHTML = peticion.responseText;
}
}
var scs=peticion.responseText.extractScript(); //capturamos los scripts
element_id.innerHTML=peticion.responseText.stripSc ript(); //eliminamos los scripts... ya son innecesarios
scs.evalScript(); //ahora si, comenzamos a interpretar todo
peticion.send(null);
}
</script>
En cuanto a peticion.php es
<?php
echo "prueba del algodón...";
echo "<script type='text/javascript'>alert('algo');</script>";
?>
He intentado cambiar las tres líneas (que interpretan los scripts) de posición pero no hay forma. Entiendo que van antes de peticion.send(null)..., pero no lo sé exactamente.
Un saludo. |