Posteado por: patovolador | Octubre 2, 2008

Script.aculo.us Ajax.InPlaceCollectionEditor en Internet Explorer

Lamento no haber escrito todas estas semanas pero he tenido tanto trabajo como un toro en epoca de cruza… jajaja… aunque lo que estaba haciendo no era tan divertido como lo debio ser para el toro…

En fin… hay tantas cosas que tengo que escribir que comenzare con la primera…

Hace poco comence a usar la libreria de script.aculo.us para un pato sistema y debo de decir que la experiencia fue buena, y aun más que excelente cuando use el control de Ajax.InPlaceCollectionEditor para cambiar un dato de manera cuca en el sistema…

Dicho control funcionaba de perlas en las demostraciones y juntas que teniamos para analizar el sistema, hasta que se puso en demo-producción y uno de nuestros amados usuarios abrio el sistema en Internet Explorer Version 7 (inmensa porqueria de ·$%$&%$& ) y zas marrano!!!! pues el que el dichoso control de Ajax.InPlaceCollectionEditor simplemente no funcionó… y peor aun, el IE mandaba su típico error de “existen problemas con la pagina actual…” lo cual debo decir, me enfada bastante, por que los problemas no son “de la pagina” si no del jodido navegador pinche y feo que interpreta como quiere los codigos javascript (y no se digan los CSS… no por nada sale hecho una mierda en la prueba ACID)

¿La solución?-… Cielos.. q debate…

” – quitamos el control Ajax…” ,
” – nos hacemos mensos y si preguntan, nos seguimos haciendo mensos”,
” – ponemos un aviso de ‘Este sistema solo puede usarse con navegadores buenos como Firefox, Safari, Opera…..’ “

Mil ideas revoloteaban por mi cabeza… hasta que, siguiendo mi ideologia de “el usuario no debe pagar los platos rotos…(aunque use el IE)” decidí buscar la forma de usar el control Ajax.InPlaceCollectionEdito de  script.aculo.us en IE…. rascando aqui y rascando allá encontre que en el archivo controls.js de la libreria en la funcion createEditField hay que sustituir la linea

var list = document.createElement(’select’);

por

var list = new Element(’select’);

asi que la funcion original dice:

createEditField: function() {

var list = document.createElement(’select’);

list.name = this.options.paramName;

list.size = 1;

this._controls.editor = list;

this._collection = this.options.collection || [];

if (this.options.loadCollectionURL)

this.loadCollection();

else

this.checkForExternalText();

this._form.appendChild(this._controls.editor);

}

La funcion final debe decir

createEditField: function() {

var list = new Element(’select’);

list.name = this.options.paramName;

list.size = 1;

this._controls.editor = list;

this._collection = this.options.collection || [];

if (this.options.loadCollectionURL)

this.loadCollection();

else

this.checkForExternalText();

this._form.appendChild(this._controls.editor);

}

Y listo… todos felices y contentos… al menos por el momento… seremos felices cuando la gente de usar el IE…

Saludos a todos por aca… y por allá también


Respuestas

  1. Carai! Me has librado de media jornada de curro.
    Gracias por publicar la corrección.
    Un saludo!


Dejar una respuesta

Su respuesta:

Categorías