Cuando jQuery deja de funcionar

Cuando jQuery deja de funcionar

Un buen día, de repente, nuestra página web deja de funcionar. Los sliders no se mueven, las animaciones dan problemas, los submenus emergentes no emergen… ¿Y todo esto por qué? Un momento, ¿No estarás usando jQuery enlazado de librerías de Google CDN? ¡Ah, pájaro!

Recientemente, jQuery ha actualizado a la versión 1.9. Toda actualización de un software como jQuery conlleva dos caras: nuevas funciones, y funciones que se eliminan. Con las nuevas no suele haber problema, nadie las estaba usando hasta ahora. El problema viene con las viejas.

Por ejemplo, si eres uno de los afortunados que usaba $.browser en tus scripts javascript/jQuery, y además, bebes de Google CDN sin utilizar una versión concreta (con un 1 en la url), estás de suerte: todos tus scripts están fallando ahora mismo.

No estoy en contra de las librerias de Google CDN, solo digo que jQuery no pesa tanto como para que nos planteemos de verdad el tener que incluirlo “desde fuera”. ¿Por qué no descargarlo, meterlo en una carpeta /js y enlazarlo directamente desde esa carpeta, en nuestro servidor? Tiene muchas más ventajas:

  • Tu trabajo no depende de terceros. Esto de cara a un cliente es crucial, el control de tu trabajo, de como se comporta tu sistema. No depende de lo que otros hagan con los archivos que intentas cargar, o de servidores que se caigan… ¿Os imagináis que alguien consigue hackear Google CDN (bueno, es un supuesto, pensad en las Ley de Murphy y en que estais trabajando para un cliente), cambia los archivos, y en lugar de jQuery os cuela cualquier otra cosa en vuestra página?
  • Es más rápido al cargarse desde el mismo servidor.

¿Por qué cargarlo desde fuera entonces? ¿Se incendia tu edificio y vas a buscar un extintor al bloque de al lado? Es más lógico tener uno controlado y a punto en tu bloque, ¿No?

Bueno, si estáis muy muy muy convencidos de la fiabilidad de cargar jQuery desde Google… Entonces os sugiero que definais la versión que queréis usar. Si hacéis solo esto:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js" type="text/javascript">

Se carga la última versión de jQuery disponible. Cuando dentro de un tiempo saquen una nueva versión, esta url cargará la nueva, y por consiguiente, os encontraréis errores (que es lo que está ocurriendo ahora). En lugar de eso, si queremos usar la versión 1.8.3, por ejemplo, debemos definir esto:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js" type="text/javascript">

Así, cambiando el 1 por 1.8.3, sabemos que estamos usando la versión que es compatible con nuestro sistema, y que, aunque Google actualice sus archivos, tú seguirás usando la mejor de todas: la que se adapta a tu sistema sin generar problemas. De cara a un cliente esto es crucial.

Y si lo que queréis es usar siempre la última versión disponible, entonces tendréis que corregir con cada versión todos los errores que surjan.

¿Y vosotros? ¿Usáis las librerías de Google Hosted Libraries, o preferís descargarlas a vuestro servidor? ¿Por qué? El debate está servido 🙂

“Cualquier tonto puede escribir código que un ordenador entiende.
Los buenos programadores escriben código que los humanos pueden entender.”

– Martin Fowler

¿Te ha gustado el artículo?
1 Star2 Stars3 Stars4 Stars5 Stars (1 votos, promedio: 5,00 sobre 5)
Loading...
Artículo escrito por

¡Exprésate! Dejanos tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

7 Comentarios

Mariano

Hola queria consultar si me pueden ayudar ya que Hola he comprado el plugin Form Builder - Survey & Quiz - FSQM Pro y estoy teniendo problemas ya que he terminado de hacer el cuestionario y lo he publicado pero hay un error y es que cuando pincho en la pestaña INSCRIPCION se queda cargando el cuestionario y no aparece, pero cuando actualizo la misma pagina ahi si que aparece. Me puedes ayudar con esto ya que no consigo de ninguna forma arreglar este error por favor. Me han dichi que es por enlaces permanentes o por Ajax http://bailongomadrid.com/ muchas gracias

Angela

Caballeros, para mi caso particular estoy forzada a llamarlo desde Google porque estoy haciendo tabs para facebook y eso precisamente no funciona como un servidor donde le subes archivos, ahí subes 1 html, 1 css y 1 js, todo php y demás recursos deben ser llamados con urls seguras (https). Este es un caso que probablemente no contemplaron así que es mi pequeño aporte :)

HECTOR

muy buen aporte me estaba enloqueciendo....

lalux4789

Desventajas no veo alguno, si se trata de web pues para que tener las cosas localmente verdad. Trabajar de esta manera tiene varias ventajas. A continuación se detalla una lista de los diferentes beneficios: Normalmente los servidores de Google son mas rápidos que un hosting compartido que podamos contratar. Google distribuye sus contenido a través de varios servidores en diferentes lugares  físicos. Cuando el navegador de un usuario resuelve la dirección URL de estos archivos, la descarga de forma automática se centrará en el servidor más cercano disponible a él. Actualizaciones constantes: Si cambia la librería con una nueva versión con mejoras, automáticamente tu sitio presidirá el cambio. Reducción del uso de trafico de tu sitio Web: Muchos usuarios tienen problemas por exceso de bandwith. Al utilizar los servidores de Google para descargar librerías que son comunes para todos, liberamos de carga de trabajo nuestros servidores Web. Aumento de la concurrencia de nuestro sitio en paralelo:Google AJAX Libraries tiene beneficios descargar en paralelo el mismos contenido local. Mejor almacenamiento en caché. Esta es una de las mayores ventajas de utilizar las Google AJAX Libraries. Si usted se está hospedando jQuery localmente en vez de utilizar a Google, entonces los navegadores de los usuarios deberán descargarse estas librerias por lo menos una vez (la primera vez que entren a su sitio). Aunque c/u de los usuarios de su sitio ya tengan docenas de copias idénticas de jQuery, descargadas en la caché de su navegador.  Pero si utilizamos las librerías de Google, el navegador del usuario puede confiar en que los archivos “.js”  son realmente los mismos y no perder tiempo en volver a descargar el archivo si ya está almacenado en caché del navegador. Con respecto al tema de las actualizaciones y versiones de JQuery es importante contemplar lo siguiente a la hora de vincular la descarga del framework directamente desde Google: Por ejemplo, el siguiente código descargara la ultima versión disponible de jQuery (hoy 18/11/2011 es la 1.7)

http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js
Pero de  la siguiente manera descargaran una versión jQuery especifica, por ejemplo en este caso la 1.3.2:
http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js

VityOsma

Una duda, si tienes tu web alojada en un servidor lento, ¿cargaría más rápido la página al cargar un archivo como jQuery que son 100 Kb desde el servidor CDN?. ¿Estas dos descargas de servidores diferentes serían simultáneas?. ¿O al estar dentro del mismo que el resto de la web se descargaría antes?. Para mi la mejor opción es el que se descargue antes, de cara al SEO la optimización de la velocidad es muy importante.

Juan Viñas

No es una mala idea para evitar este tipo de problemas. Sin embargo, ya que la tienes en tu servidor, ¿Por qué cargarla desde Google? Que conste que aunque haya escrito este artículo en tono de "crítica", estoy abierto al debate razonado :) Me gustaría saber qué motivos existen para hacer algo que considero ilógico, ¡pero quizá esté totalmente equivocado! En esta profesión no se deja de aprender nunca :)

Iván Ramos

Pues a mí me gusta como lo hace HTML5Boilerplate. Lo cargas primero desde Google y luego compruebas que se ha cargado, y si no es así pues lo cargas desde tu propio servidor. Y por supuesto siempre lo mejor es cargar la versión compatible con tu sistema. window.jQuery || document.write('')