Ver Mensaje Individual
  #1 (permalink)  
Antiguo 28/03/2012, 08:07
cronosmen
 
Fecha de Ingreso: junio-2008
Mensajes: 165
Antigüedad: 15 años, 11 meses
Puntos: 6
No funciona en IE pero si en firefox

Hola muchachos, tengo el problema que menciona el titulo del post. Este código funciona correctamente en Firefox pero no lo hace en IE.
Código Javascript:
Ver original
  1. var Asset = null;
  2.     var CXMW = {  //wapi
  3.  
  4.         secuency:0,
  5.         widgets:{},
  6.         site:'#site#',
  7.         queued:new Array,
  8.         loading:{},
  9.         widget:function(options){
  10.                    
  11.             var loadwidget = function(){
  12.                 options.id = CXMW.secuency++;
  13.                 var widget = options.widget;
  14.                 CXMW.getWidget(widget,options);
  15.                 return CXMW.widgets[options.id];
  16.             }
  17.            
  18.             var test_mootools = function(){
  19.                 if (typeof window.MooTools == "undefined") {
  20.                     var script_tag = document.createElement('script');
  21.                     script_tag.setAttribute("type","text/javascript");
  22.                     script_tag.setAttribute("src","https://ajax.googleapis.com/ajax/libs/mootools/1.4.5/mootools.js")
  23.                     if (window.addEventListener) window.addEventListener('load', loadwidget(), false);
  24.                     else if (window.attachEvent) window.attachEvent('onload', loadwidget());
  25.                     document.getElementsByTagName("head")[0].appendChild(script_tag);
  26.                     } else {
  27.                         loadwidget();
  28.                     }
  29.                 }
  30.             test_mootools();
  31.                
  32.         },
  33.  
  34.         getWidget:function(widget,options){
  35.                 if(!Asset){
  36.                         var Asset={javascript:function(d,b){if(!b){b={};}var a=new Element("script",{src:d,type:"text/javascript"}),e=b.document||document,c=b.onload||b.onLoad;
  37.                         delete b.onload;delete b.onLoad;delete b.document;if(c){if(typeof a.onreadystatechange!="undefined"){a.addEvent("readystatechange",function(){if(["loaded","complete"].contains(this.readyState)){c.call(this);
  38.                         }});}else{a.addEvent("load",c);}}return a.set(b).inject(e.head);},css:function(d,a){if(!a){a={};}var b=new Element("link",{rel:"stylesheet",media:"screen",type:"text/css",href:d});
  39.                         var c=a.onload||a.onLoad,e=a.document||document;delete a.onload;delete a.onLoad;delete a.document;if(c){b.addEvent("load",c);}return b.set(a).inject(e.head);
  40.                         },image:function(c,b){if(!b){b={};}var d=new Image(),a=document.id(d)||new Element("img");["load","abort","error"].each(function(e){var g="on"+e,f="on"+e.capitalize(),h=b[g]||b[f]||function(){};
  41.                         delete b[f];delete b[g];d[g]=function(){if(!d){return;}if(!a.parentNode){a.width=d.width;a.height=d.height;}d=d.onload=d.onabort=d.onerror=null;h.delay(1,a,a);
  42.                         a.fireEvent(e,a,1);};});d.src=a.src=c;if(d&&d.complete){d.onload.delay(1);}return a.set(b);},images:function(c,b){c=Array.from(c);var d=function(){},a=0;
  43.                         b=Object.merge({onComplete:d,onProgress:d,onError:d,properties:{}},b);return new Elements(c.map(function(f,e){return Asset.image(f,Object.append(b.properties,{onload:function(){a++;
  44.                         b.onProgress.call(this,a,e,f);if(a==c.length){b.onComplete();}},onerror:function(){a++;b.onError.call(this,a,e,f);if(a==c.length){b.onComplete();}}}));
  45.                         }));}};
  46.                     }
  47.                     if(CXMW[widget]){  // esta definido el widget en el API ??
  48.                         CXMW.widgets[options.id] = (CXMW.widgets[options.id])  ? CXMW.widgets[options.id] : new CXMW[widget](options);
  49.                     }else{
  50.                         if(CXMW.loading[widget]){CXMW.queued.push(options);}      // voy encolando las peticiones hasta finalizar la carga
  51.                         else {
  52.                             CXMW.loading[widget] = true;
  53.                             CXMW.queued.push(options);
  54.                             var myload = Asset.javascript(CXMW.site + widget + ".js", {
  55.                                 onLoad: function(){
  56.                                     //alert("loadedd");
  57.                                     CXMW.queued.each(function(item,index){
  58.                                         if(item.widget == widget){
  59.                                             CXMW.widgets[item.id] = (CXMW.widgets[item.id])  ? CXMW.widgets[item.id] : new CXMW[widget](item);
  60.                                             CXMW.queued.slice(index,1);
  61.                                         }
  62.                
  63.                                     });
  64.                                     CXMW.loading[widget] = false;
  65.                                     }
  66.                             });
  67.                         }    
  68.                        
  69.                                        
  70.  
  71.                     }      
  72.         }
  73.  
  74.     };

Creo que me está fallando el trozo cuando cargo mootools dinamicamente.

Código Javascript:
Ver original
  1. var test_mootools = function(){
  2.                 if (typeof window.MooTools == "undefined") {
  3.                     var script_tag = document.createElement('script');
  4.                     script_tag.setAttribute("type","text/javascript");
  5.                     script_tag.setAttribute("src","https://ajax.googleapis.com/ajax/libs/mootools/1.4.5/mootools.js")
  6.                     if (window.addEventListener) window.addEventListener('load', loadwidget(), false);
  7.                     else if (window.attachEvent) window.attachEvent('onload', loadwidget());
  8.                     document.getElementsByTagName("head")[0].appendChild(script_tag);
  9.                     } else {
  10.                         loadwidget();
  11.                     }
  12.                 }
  13.             test_mootools();

Pero no soy capaz de solucionarlo, ojala podáis echarme una manita.