Foros del Web » Programando para Internet » Jquery »

Problemas al cargar javascript dentro de un div con ajax

Estas en el tema de Problemas al cargar javascript dentro de un div con ajax en el foro de Jquery en Foros del Web. Hola de ante mano muchas gracias, resulta que tengo un problema que ya me esta tomando horas en resolver, tengo un div en donde cargo ...
  #1 (permalink)  
Antiguo 17/06/2014, 20:29
 
Fecha de Ingreso: diciembre-2013
Mensajes: 108
Antigüedad: 10 años, 11 meses
Puntos: 1
Problemas al cargar javascript dentro de un div con ajax

Hola de ante mano muchas gracias, resulta que tengo un problema que ya me esta tomando horas en resolver, tengo un div en donde cargo con ajax una pagina todo bien hasta ahí sin embargo no me funciona el javascript que esta dentro de la pagina cargada en el div ajax, antes que nada les mostrare mi programita que es un simple paginador en tiempo real:

Código PHP:
function objetoAjax(){
    var 
xmlhttp=false;
    try {
        
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (
e) {
        try {
           
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (
E) {
            
xmlhttp false;
          }
    }

    if (!
xmlhttp && typeof XMLHttpRequest!='undefined') {
        
xmlhttp = new XMLHttpRequest();
    }
    return 
xmlhttp;
}

function 
Paginacione(where,tema,nropagina,catname,topicid,ttl,p){
    
    
//donde se mostrará los registros
    
divContenido document.getElementById('super-paginacion');
    
    
ajax=objetoAjax();
    
//uso del medoto GET
    //indicamos el archivo que realizará el proceso de paginar
    //junto con un valor que representa el nro de pagina
    
$(".paginacion").hide();
    $(
"#load").append("<span style='color:#ff0000;'><img width='15' height='15' src='imagen/load.gif'/></span>");
    
ajax.open("GET""ajax/comentario.php?temas="+tema+"&screen="+nropagina,true);
    

    
window.location.assign("posts/"+catname+"/"+topicid+"/"+ttl+".html#paginacion-"+p);
    
window.location.assign("posts/"+catname+"/"+topicid+"/"+ttl+".html#paginacion-"+nropagina);
    
ajax.onreadystatechange=function() {
        if (
ajax.readyState==4) {
            
//mostrar resultados en esta capa
       
var scs=ajax.responseText.extractScript();    //capturamos los scripts 
       
divContenido.innerHTML ajax.responseText
       scs
.evalScript();       //ahora si, comenzamos a interpretar todo  
            
        
}
    }
    
//como hacemos uso del metodo GET
    //colocamos null ya que enviamos 
    //el valor por la url ?pag=nropagina
    
ajax.send(null)

en el cod anterior ya le eh puesto un prototype que funciona muy bien:

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 
        */ 
   
var jQuery.noConflict(); 
   
j(document).ready(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
        };  
                              }); 

sin embargo tengo un error por ejemplo hay 4 paginas las cuales se paginan si entro a cualquiera de ella se cargara el div y funciona todo a la perfeccion porque esta el prototype sin embargo cuando entro a otra deja de funcionar , no tengo entendido porque el prototype solo funciona una ves despues ya nada estube leyendo algo sobre :

Código PHP:
evalscripts :true 
pero no se como incluirlo aca:

Código PHP:
ajax.open("GET""ajax/comentario.php?temas="+tema+"&screen="+nropagina,true); 
porfabor si alguien tiene otra solucion o otro prototype que me ayude porfabor muchas gracias por todo.
  #2 (permalink)  
Antiguo 18/06/2014, 09:08
 
Fecha de Ingreso: agosto-2010
Mensajes: 44
Antigüedad: 14 años, 3 meses
Puntos: 2
Respuesta: Problemas al cargar javascript dentro de un div con ajax

Hola! hace unos días estuve con el mismo problema, y buscando por internet llegué a la conclusión de que las cargas por ajax no ejecutan los <script />, por lo que hice éste pequeño código y ahora todo funciona a la perfección (está en ti adaptarlo a tu programación ya que está hecho en jquery y no me manejo en el funcionamiento de XMLHttpRequest.

Código Javascript:
Ver original
  1. $(document).ajaxComplete(function(e,xhr,s) { // Al completar cada carga de ajax
  2.     var arr = xhr.responseText;
  3.     var re = /<script\b[^>]*>([\s\S]*?)<\/script>/gm; // Buscamos todos los bloques de código dentro de <script />
  4.  
  5.     var match;
  6.     var i = 1;
  7.     while (match = re.exec(arr)) {
  8.       try {
  9.         eval(match[i]) // Se evalúan los js
  10.       } catch(e) {}
  11.      
  12.       i++;
  13.     }
  14. });

Espero te sirva :D
Saludos!
  #3 (permalink)  
Antiguo 18/06/2014, 21:53
 
Fecha de Ingreso: diciembre-2013
Mensajes: 108
Antigüedad: 10 años, 11 meses
Puntos: 1
Respuesta: Problemas al cargar javascript dentro de un div con ajax

Cita:
Iniciado por diegoibanez Ver Mensaje
Hola! hace unos días estuve con el mismo problema, y buscando por internet llegué a la conclusión de que las cargas por ajax no ejecutan los <script />, por lo que hice éste pequeño código y ahora todo funciona a la perfección (está en ti adaptarlo a tu programación ya que está hecho en jquery y no me manejo en el funcionamiento de XMLHttpRequest.

Código Javascript:
Ver original
  1. $(document).ajaxComplete(function(e,xhr,s) { // Al completar cada carga de ajax
  2.     var arr = xhr.responseText;
  3.     var re = /<script\b[^>]*>([\s\S]*?)<\/script>/gm; // Buscamos todos los bloques de código dentro de <script />
  4.  
  5.     var match;
  6.     var i = 1;
  7.     while (match = re.exec(arr)) {
  8.       try {
  9.         eval(match[i]) // Se evalúan los js
  10.       } catch(e) {}
  11.      
  12.       i++;
  13.     }
  14. });

Espero te sirva :D
Saludos!
Esta bueno tu Script sin embargo ya pude solucionar mi problema , tuve que modificar una libreria que estaba haciendo conflicto con la funcion para que reconosca SCRIPT no se porq en primer instancia si me funcionaba de todas maneras me guardo tu script para probarlo en otro proyecto muchas graciasssssssss ¡¡¡

Etiquetas: ajax, funcion, html, javascript, php, valor
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:18.