- Detalles
- Por Juan Padial
- En Programación
- Visto: 2794
Hace tiempo que venía utilizando un pequeño javascript para hacer una llamada ajax con jquery. Y me había funcionado perfectamente. Es cierto que no lo había probado en Google Chrome. Bueno, si que lo había probado pero no en todas las posibles situaciones.
El caso que en el script tenía las siguente líneas:
document.getElementById('pagination').innerHTML = '';
container.innerHTML = response[1];
Repito, todo funcionaba perfectamente en IE, Firefox....y en Chrome no había notado nada hasta que ayer estaba utilizando Chrome y algo iba mal, el javascript dejaba de funcionar, pero solo en Chrome y solo en algunas páginas donde se ejecuta el mismo script. El mensaje que aparecía en la consola javascript de Chrome era "Cannot set property 'innerHTML' of null". Y yo me preguntaba pero por qué esto ahora!!!! Y por qué solo en Chrome!!!!
Después de comerme un poco el tarro llegué a lo evidente: el elemento "pagination" no existía en la página en la página dónde detecté el error pues no había elementos que mostrar ahí y el php que generaba la página, por tanto, no lo creaba. Al no existir dicho elemento document.getElementById('pagination') es nulo....y no se le puede aplicar la propiedad innerHTML a un elemento nulo!!! En los demás navegadores funcionaba por qué no llevan esta regla de forma tan estricta e ignoran este error.
Por tanto, en este caso, la solución al error en Chrome "Cannot set property 'innerHTML' of null" es comprobar si existe el elemento en el html antes de ejecutar ningún javascript en ese elemento:
var page_container = document.getElementById('pagination');
if(page_container != null) {
page_container.innerHTML = '';
}
container.innerHTML = response[1]; Creado el 16 08 2011 Actualizado el 19 01 2013
