Quantcast
Viewing latest article 3
Browse Latest Browse All 4

Una alternativa de Noxtrum al bug de Firefox

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.


Viewing latest article 3
Browse Latest Browse All 4