Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/11/2010, 13:48
Avatar de 8vio
8vio
 
Fecha de Ingreso: marzo-2008
Ubicación: Detras del monitor
Mensajes: 168
Antigüedad: 16 años, 1 mes
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...