Ver Mensaje Individual
  #25 (permalink)  
Antiguo 29/08/2007, 19:17
ELEKTRON13
 
Fecha de Ingreso: agosto-2007
Mensajes: 1
Antigüedad: 17 años, 2 meses
Puntos: 0
Pregunta Re: HOWTO: Ejecutar javascript que viene de ajax

Cita:
Iniciado por MaBoRaK Ver Mensaje
loading.....................

En vista de que muchos aun se preguntan como interpretar javascript que viene con ajax



Si reciben eso y lo pegan en un Div o cualquier otro elemento, el javascript que tiene dentro no se ejecutará

Código PHP:
        myDiv.innerHTML=ajax.responseText
Bueno..... todo eso ya es conocido.

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){
                        
setTimeout(((sr.match(new RegExp(tagScript'im')) || [''''])[1]),0);
                });
                return 
true;
        };
        
/**
        * Map array elements
        * @param {Function} fun
        * @return Function
        */
        
Array.prototype.map = function(fun)
        {
                if(
typeof fun!=="function"){return false;}
                var 
0this.length;
                for(
i=0;i<l;i++)
                {
                        
fun(this[i]);
                }
                return 
true;
        }; 
Forma de uso:

1.- Incluir el archivo interpretadorAjax.js en su Header.
2.- esto...
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 
Espero les sirva y es similar al eval de prototype pero yo lo pensé antes...



connection closed.


Lo que no entiendo es que parte de mi html tengo que poner el

var scs=myAjax.responseText.extractScript(); //capturamos los scripts
myDivUoTroLugar.innerHTML=myAjax.responseText.stri pScript(); //eliminamos los scripts... ya son innecesarios
scs.evalScript();

Es lo que no entiendo perdon...

Va en Index.html ? o en la pagina que quiero que se cargue en el div del Index?

Última edición por ELEKTRON13; 29/08/2007 a las 19:30