Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Javascript llamado desde AJAX falla en IE

Estas en el tema de Javascript llamado desde AJAX falla en IE en el foro de Frameworks JS en Foros del Web. Hola a todos, Vengo referenciado desde este post: http://www.forosdelweb.com/f77/howto...e-ajax-510438/ Todo funciona ok tanto en firefox como en IE, solo que en IE cuando rellamo por ...
  #1 (permalink)  
Antiguo 23/11/2010, 13:48
Avatar de 8vio  
Fecha de Ingreso: marzo-2008
Ubicación: Detras del monitor
Mensajes: 168
Antigüedad: 16 años
Puntos: 6
Javascript llamado desde AJAX falla en IE

Hola a todos,

Vengo referenciado desde este post:

http://www.forosdelweb.com/f77/howto...e-ajax-510438/

Todo funciona ok tanto en firefox como en IE, solo que en IE cuando rellamo por asi decirlo el div, se pierden los atributos del js y el Firefox no sucede.

aqui esta el link para que vean el error, consulten el utlimo link contactenos en IE, y posteriormente vuelvan a hacer click en el enlace, en IE se pierden las carateristicas tinymce que son las librerias que estoy usando para este caso

http://www.boolean.com.ve/

El codigo de mi llamadas asincronas a paginas es este:

Código:
// Documento JavaScript
// Esta función cargará las paginas



function llamarasincrono(url, id_contenedor){
var pagina_requerida = false
if (window.XMLHttpRequest) {// Si es Mozilla, Safari etc
pagina_requerida = new XMLHttpRequest()
} else if (window.ActiveXObject){ // pero si es IE
try {
pagina_requerida = new ActiveXObject("Msxml2.XMLHTTP")
} 
catch (e){ // en caso que sea una versión antigua
try{
pagina_requerida = new ActiveXObject("Microsoft.XMLHTTP")
}
catch (e){}
}
}
else
return false
pagina_requerida.onreadystatechange=function(){ // función de respuesta
cargarpagina(pagina_requerida, id_contenedor)
}
pagina_requerida.open('GET', url, true) // asignamos los métodos open y send
pagina_requerida.send(null)
}
// todo es correcto y ha llegado el momento de poner la información requerida
// en su sitio en la pagina xhtml
function cargarpagina(pagina_requerida, id_contenedor){
if (pagina_requerida.readyState == 4 && (pagina_requerida.status==200 || window.location.href.indexOf("http")==-1)){


 var scs=pagina_requerida.responseText.extractScript(); //capturamos los scripts 
document.getElementById (id_contenedor).innerHTML = pagina_requerida.responseText; //eliminamos los scripts... ya son innecesarios
scs.evalScript(); 




document.getElementById(id_contenedor).innerHTML=pagina_requerida.responseText

}


}
en el index de la pagina llamo a

Código:
<script type="text/javascript" src="jscripts/tiny_mce/tiny_mce.js"></script>

<script>
	
  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;
        };  
</script>
y en la pagina llamada en el div tengo en el head este codigo:

Código:
<script type="text/javascript">
tinyMCE.init({
		mode : "textareas",
		theme : "simple",
		skin : "o2k7"
	});	

</script>
Funciona con Firefox y funciona con IE solo una vez.

Muchas gracias por la ayuda que me puedan prestar, saludos...
  #2 (permalink)  
Antiguo 23/11/2010, 13:58
 
Fecha de Ingreso: enero-2010
Mensajes: 39
Antigüedad: 14 años, 3 meses
Puntos: 1
Respuesta: Javascript llamado desde AJAX falla en IE

El problema esta en que estas inicializando dos veces el tinyMCE (tiniMCE.init)... esto causa conflictos en IE

Intentaste poner el tinyMCE.init en el index y no en el DIV que recargas con ajax?
  #3 (permalink)  
Antiguo 23/11/2010, 14:04
Avatar de 8vio  
Fecha de Ingreso: marzo-2008
Ubicación: Detras del monitor
Mensajes: 168
Antigüedad: 16 años
Puntos: 6
Respuesta: Javascript llamado desde AJAX falla en IE

Hola TragedyCL,

De hecho ya he intentado eso, y de esa forma no funciona ni en Firefox ni en IE.

Saludos,
  #4 (permalink)  
Antiguo 23/11/2010, 14:24
 
Fecha de Ingreso: enero-2010
Mensajes: 39
Antigüedad: 14 años, 3 meses
Puntos: 1
Respuesta: Javascript llamado desde AJAX falla en IE

Entonces mete el llamado al .JS Del tinyMCE dentro de la llamada al DIV, es decir:

Código Javascript:
Ver original
  1. <script type="text/javascript" src="jscripts/tiny_mce/tiny_mce.js"></script>
  2. <script type="text/javascript">
  3. tinyMCE.init({
  4.         mode : "textareas",
  5.         theme : "simple",
  6.         skin : "o2k7"
  7.     });
  8.  
  9. </script>

Con esto DEBERIA reiniciarte el tinyMCE cada vez que entras al DIV
  #5 (permalink)  
Antiguo 23/11/2010, 14:29
Avatar de 8vio  
Fecha de Ingreso: marzo-2008
Ubicación: Detras del monitor
Mensajes: 168
Antigüedad: 16 años
Puntos: 6
Respuesta: Javascript llamado desde AJAX falla en IE

Hola TragedyCL,

De esa manera queda igual a como lo tengo actualmente (ya lo he probado). Igualmente estoy llamando al div con AJAX y estoy pasando los scripts como en el post que comente antes:

Código:
var scs=pagina_requerida.responseText.extractScript(); //capturamos los scripts 
document.getElementById (id_contenedor).innerHTML = pagina_requerida.responseText; //eliminamos los scripts... ya son innecesarios
scs.evalScript();
Gracias por poner tanta atencion al post :)

Saludos,

Etiquetas: ajax, falla, javascript, llamado
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 04:09.