En vista de que muchos aun se preguntan como interpretar javascript que viene con ajax
Cita:
Si reciben eso y lo pegan en un Div o cualquier otro elemento, el javascript que tiene dentro no se ejecutaráTexto que tiene javascript
<script>
alert("aqui mismo");
</script>
y mas
<script>
alert("aqui mismo");
</script>
y mas
Código PHP:
myDiv.innerHTML=ajax.responseText;
Manos a la obra
interpretadorAjax.js
Código PHP:
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;
};
- Incluir el archivo interpretadorAjax.js en su Header.
- Interpretando.
- Interprete normal
Código:Texto blabla <script type='text/javscript'>alert('algo');</script> Otro texto blabla
Código PHP:var scs=myAjax.responseText.extractScript(); //capturamos los scripts
myDivUoTroLugar.innerHTML=myAjax.responseText.stripScript(); //eliminamos los scripts... ya son innecesarios
scs.evalScript(); //ahora si, comenzamos a interpretar todo
- Ahora bien, para interpretar archivos javascript
Código:Se debe hacer.<script type='text/javascript'>alert('algo');</script> Texto blabla <script type='text/javascript' src="algo.js"></script> Otro texto blabla
Código PHP:var scs=myAjax.responseText.extractScript(); //capturamos los scripts
myDivUoTroLugar.innerHTML=myAjax.responseText
scs.evalScript(); //ahora si, comenzamos a interpretar todo
- Interprete normal
Espero les sirva y es similar al eval de prototype pero yo lo pensé antes...
connection closed.