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

NO funciona en ie8 y anteriores :(

Estas en el tema de NO funciona en ie8 y anteriores :( en el foro de Frameworks JS en Foros del Web. Buenas compañeros, ojala podaís ayudarme con este código que me está volviendo loco, en internet explorer 8 y anteriores no me funciona, he intentado mil ...
  #1 (permalink)  
Antiguo 27/03/2012, 05:30
 
Fecha de Ingreso: junio-2008
Mensajes: 165
Antigüedad: 15 años, 10 meses
Puntos: 6
NO funciona en ie8 y anteriores :(

Buenas compañeros, ojala podaís ayudarme con este código que me está volviendo loco, en internet explorer 8 y anteriores no me funciona, he intentado mil formas pero creo que solo he podido acercarme a que el problema esta cuando hace el Asset.javascript(...);

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.  
  19.             var test_mootools = function(){
  20.                 alert(window.mootools);
  21.                 if (typeof window.MooTools == "undefined") {
  22.                     var script_tag = document.createElement('script');
  23.                     script_tag.setAttribute("type","text/javascript");
  24.                     script_tag.setAttribute("src","https://ajax.googleapis.com/ajax/libs/mootools/1.4.5/mootools.js")
  25.                     if (window.addEventListener) window.addEventListener('load', loadwidget, false);
  26.                     else if (window.attachEvent) window.attachEvent('onload', loadwidget);
  27.                     document.getElementsByTagName("head")[0].appendChild(script_tag);
  28.                     } else {
  29.                         loadwidget();
  30.                     }
  31.                 }
  32.             test_mootools();
  33.                
  34.         },
  35.  
  36.         getWidget:function(widget,options){
  37.                    
  38.                     if(CXMW[widget]){  // esta definido el widget en el API ??
  39.                         CXMW.widgets[options.id] = (CXMW.widgets[options.id])  ? CXMW.widgets[options.id] : new CXMW[widget](options);
  40.                     }else{
  41.                         if(CXMW.loading[widget]){CXMW.queued.push(options);}      // voy encolando las peticiones hasta finalizar la carga
  42.                         else {
  43.                             CXMW.loading[widget] = true;
  44.                             CXMW.queued.push(options);
  45.                             console.log(Asset);
  46.                             Asset.javascript(CXMW.site + widget + ".js", {
  47.                                 onLoad: function(){
  48.                                     alert("loadedd");
  49.                                     CXMW.queued.each(function(item,index){
  50.                                         if(item.widget == widget){
  51.                                             CXMW.widgets[item.id] = (CXMW.widgets[item.id])  ? CXMW.widgets[item.id] : new CXMW[widget](item);
  52.                                             CXMW.queued.slice(index,1);
  53.                                         }
  54.                
  55.                                     });
  56.                                     CXMW.loading[widget] = false;
  57.                                     }
  58.                             });
  59.                         }    
  60.                        
  61.                                            
  62.  
  63.  
  64.  
  65.                     }      
  66.         }
  67.  
  68.     };
  69.  
  70.     if(Asset==null){
  71.         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;
  72.         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);
  73.         }});}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});
  74.         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);
  75.         },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(){};
  76.         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);
  77.         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;
  78.         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++;
  79.         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();}}}));
  80.         }));}};
  81.     }

Ojala podais ayudarme por que realmente me está matando este tema. Mil gracias por adelantado a los que almenos se molesten en leer este largo post.
  #2 (permalink)  
Antiguo 27/03/2012, 05:33
 
Fecha de Ingreso: junio-2008
Mensajes: 165
Antigüedad: 15 años, 10 meses
Puntos: 6
Respuesta: NO funciona en ie8 y anteriores :(

Creo que he resuelto mi problema, era al hacer:

Código Javascript:
Ver original
  1. Asset.javascript(CXMW.site + widget + ".js", {
  2.                                 onLoad: function(){
  3.                                     alert("loadedd");
  4.                                     CXMW.queued.each(function(item,index){
  5.                                         if(item.widget == widget){
  6.                                             CXMW.widgets[item.id] = (CXMW.widgets[item.id])  ? CXMW.widgets[item.id] : new CXMW[widget](item);
  7.                                             CXMW.queued.slice(index,1);
  8.                                         }
  9.                
  10.                                     });
  11.                                     CXMW.loading[widget] = false;
  12.                                     }
  13.                          });

Solo tenia que hacerlo con un var myscript = Asset.....

Gracias de todas formas por leer :)
  #3 (permalink)  
Antiguo 28/03/2012, 04:43
 
Fecha de Ingreso: junio-2008
Mensajes: 165
Antigüedad: 15 años, 10 meses
Puntos: 6
Respuesta: NO funciona en ie8 y anteriores :(

Pues sigue sin funcionar en ie9 y anteriores, me da un error que supuestamente está en esta linea:
Código Javascript:
Ver original
  1. 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;

Creo que es por que falla cuando cargo MooTools dinamicamente en

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();

Etiquetas: ajax, anteriores, funcion, ie8, javascript, js
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 23:52.