Al hilo del comentario de JM sobre Noxtrum en el anterior post, donde me comentaba que el problema se debía a un bug en Firefox, cogí una linterna y un paraguas e indagué un poco en los javascriptses de Noxtrum. Tras años de investigación raspando código y haciendo pruebas unitarias -u onanistas-, localicé finalmente el problema con un sencilla búsqueda de texto de la palabra “unshift” en los js de marras.
Parece ser que la función donde peta se encuentra en un tal /javascript/cestel.queue.js, y tiene tal pinta:
this.enqueueAtFirst = function(obj)
{
this.data.unshift(obj); // Arrghh
this.data.length=this.size;
}
(El “// Arrghh” es mío)
El manual de javascript me dice que el método unshift agrega un elemento al principio del array y devuelve la longitud resultante del nuevo array. A Firefox todo le parece muy bien pero si el array se queda vacío tiene posiciones vacías se produce cierta esquizofrenia en algunos punteros.
Veamos.. ¿qué puedo utilizar para que no se queje mi amado Firefox? A ver, a ver, algún otro método que me resuelva la papeleta.. mmm.. podría utilizar concat, uno los dos arrays y santas pascuas:
this.enqueueAtFirst = function(obj)
{
this.data = [obj].concat(this.data); // Aquí he metido mano
this.data.length=this.size;
}
Y ahora parece que no se queja Firefox y además sigue funcionando en Internet Exploter. La moraleja de todo esto es que me ha llevado unos quince minutos plantear una alternativa al error, así que tengo claro que no lo modifican porque habrá alguien que no lo ve significativo. Y no me refiero al equipo de desarrollo, donde habrá gente mucho más capacitada que yo.
Por otra parte, y a raíz de trastear un poco el código de cliente de Noxtrum, enhorabuena a los programadores, que se lo han currado.