Foros del Web » Programando para Internet » Javascript »

problema con getElementsByTagName o con eval

Estas en el tema de problema con getElementsByTagName o con eval en el foro de Javascript en Foros del Web. Tengo este trozo de codigo en una funcion para cargar contenido dinamico en un div, el div es el objeto contenedor que esta aqui adelante. ...
  #1 (permalink)  
Antiguo 18/10/2010, 19:26
 
Fecha de Ingreso: octubre-2009
Ubicación: Catamarca
Mensajes: 91
Antigüedad: 15 años, 1 mes
Puntos: 4
problema con getElementsByTagName o con eval

Tengo este trozo de codigo en una funcion para cargar contenido dinamico en un div, el div es el objeto contenedor que esta aqui adelante. En ese codigo html cargado hay algunas funciones javascript que se deben ejecutar, con esto logro que se ejecuten sin ningun problema en chrome y firefox pero IE 7, 8 y 9 no hacen absolutmente nada. Cual es el problema?

var scripts = contenedor.getElementsByTagName('script');
for (var ix = 0; ix < scripts.length; ix++) {
eval(scripts[ix].text);
}
  #2 (permalink)  
Antiguo 18/10/2010, 19:43
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años, 5 meses
Puntos: 834
Respuesta: problema con getElementsByTagName o con eval

Normalmente Explorer no incluye tags script en la propiedad innerHTML, por lo getElementsByTagName no te sirve.
Tendrás que tomar el texto que usás para setear la propiedad innerHTML y parsearlo con expresiones regulares.
Este proptotipo podrá servirte:
Código:
String.prototype.tratarResponseText=function(){
    var pat=/<script[^>]*>([\S\s]*?)<\/script[^>]*>/ig;
    var pat2=/\bsrc=[^>\s]+\b/g;
    var elementos = this.match(pat) || [];
    for(i=0;i<elementos.length;i++) {
        var nuevoScript = document.createElement('script');
        nuevoScript.type = 'text/javascript';
        var tienesrc=elementos[i].match(pat2) || [];
        if(tienesrc.length){
            nuevoScript.src=tienesrc[0].split("'").join('').split('"').join('').split('src=').join('').split(' ').join('');
        }else{
            var elemento = elementos[i].replace(pat,'$1','');
            nuevoScript.text = elemento;
        }
        document.getElementsByTagName('body')[0].appendChild(nuevoScript);
    }
    return this.replace(pat,'');
}
  #3 (permalink)  
Antiguo 18/10/2010, 19:47
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años, 5 meses
Puntos: 834
Respuesta: problema con getElementsByTagName o con eval

Más info: http://www.disegnocentell.com.ar/notas2.php?id=176
  #4 (permalink)  
Antiguo 18/10/2010, 20:41
 
Fecha de Ingreso: octubre-2009
Ubicación: Catamarca
Mensajes: 91
Antigüedad: 15 años, 1 mes
Puntos: 4
Respuesta: problema con getElementsByTagName o con eval

Muchas gracias, estuve tratando de hacer algo pero por ahora no funciona nada, lo voy a dejar para mas adelante ahora que ya se por donde va la mano.

Etiquetas: eval
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 05:41.