¿Cómo actualizo jQuery a la última versión que puedo descargar?

33

Estoy usando Drupal 7, que usa jQuery 1.4 por defecto. ¿Cómo puedo actualizarlo a la última versión (actualmente 1.7)?

Karmacoma
fuente
1
No quiero usar el módulo, quiero manuel.
Karmacoma
Actualizar jQuery en Drupal manualmente sería muy complicado y arriesgado incluso para los desarrolladores de Drupal más experimentados. Debe seguir el consejo de Clive y utilizar jQuery Update.
sheena_d
Voy al archivo misc-jquery.js a través de ftp y reemplazo el nuevo código jquery. ¿Correcto?
Karmacoma
misc-jquery.js no es exactamente la misma copia de una versión de jquery, que yo sepa. Sin embargo, según git, drupalcode.org/project/jquery_update.git/tree/refs/heads/… , también podría haber un soporte 1.7.
AyeshK
@Patrick Kenny No creo que sea correcto: puedo seleccionar jquery 1.8 usando jquery_update a partir de hoy
duda1ejack

Respuestas:

44

Una forma es instalar la versión de desarrollo de jQuery Update , que le ofrece la opción de usar jQuery 1.7 (visitando la página de configuración en http://mysite.com/admin/config/development/jquery_update ).

Sin embargo, tenga cuidado, actualmente se sabe que rompe JavaScript en otra parte del sitio (por ejemplo, el menú desplegable de widgets en una página Administrar campos ya no funcionará). Si está preparado para arreglar eso, y cualquier otra molestia pequeña, esta es probablemente su mejor opción. También debe tener en cuenta que el uso de la versión de desarrollo de un módulo no está exento de riesgos, ya que las posibilidades de que tenga errores son mucho mayores que el uso de una versión específica.

Si desea hacerlo manualmente, tendrá que reescribir una gran cantidad de código JavaScript central para que su sitio funcione como se espera; jQuery cambió muchísimo entre la versión 1.4 / 1.5 y 1.7, por lo que gran parte del código JavaScript Drupal central simplemente no funcionará con él.

Si solo desea colocar una versión de jQuery 1.7, entonces probablemente podría implementar hook_js_alter(), desarmar el archivo jQuery principal y agregar el suyo en su lugar:

function MYMODULE_js_alter(&$js) {
  $path = drupal_get_path('module', 'MYMODULE') . '/path/to/jquery.1.7.js';

  // Copy the current jQuery file settings and change
  $js[$path] = $js['misc/jquery.js'];

  // Update necessary settings
  $js[$path]['version'] = 1.7;
  $js[$path]['data'] = $path;

  // Finally remove the original jQuery
  unset($js['misc/jquery.js']);
}

Una vez que hayas hecho eso, abre Herramientas para desarrolladores / Firebug y verás todos los cambios que necesitarás hacer para que el resto del sitio JS funcione :)

ACTUALIZAR

La última versión de la actualización de jQuery ( 7.x-2.3 en el momento de la escritura) ahora le permitirá actualizar jQuery a v1.8. Muy genial.

El módulo jQuery Multi es otra opción, gracias a Goron por señalarlo en los comentarios. Como también señala, este módulo tiene una versión estable y no romperá ningún javascript existente.

Clive
fuente
Gracias hombre !!! ¡He estado buscando esto por un tiempo! En mi caso, solo quería cargar una versión diferente de jQuery por tema, así que reemplacé MYMODULE_js_alter por MYTHEME_js_alter y drupal_get_path ('theme', 'MYTHEME') para drupal_get_path ('module', 'MYMODULE')
victmo
1
Tenga cuidado, Drupal viene con su propio conjunto de archivos JavaScript escritos para trabajar con un jQuery antiguo y no es compatible con jQuery 1.7 o 1.8. La última actualización de jQuery proporciona archivos de reemplazo para estos.
Pierre Buyle
1
Necesita la versión de desarrollo del módulo, la versión estable no tiene la opción para 1.7
Clive
2
jQuery Multi es otra opción, que no requiere la versión de desarrollo, y no romperá ningún JS. ¿Quizás agregarlo como una opción o eliminar "La única forma"?
goron
1
@goron Buen punto, gracias. Probablemente parte de esta respuesta esté obsoleta. Intentaré actualizarla pronto
Clive
4

También debe considerar usar el módulo múltiple jquery que le permite usar más de una versión de jquery. Gran módulo, lo estoy usando para Druapl 7 y 6 en todos mis proyectos.

rreiss
fuente
2

Inspirado por la documentación de hook_js_alter , los siguientes trabajos. Puedes colocarlo en el template.php de tu tema. Esto requiere que use un tema de administrador diferente para evitar conflictos con el núcleo de Drupal, y supone que jquery-1.8.3.min.js está ubicado en una carpeta llamada 'js' dentro del tema (ajuste según convenga).

function [theme_machine_name]_js_alter(&$javascript) {

  $javascript['misc/jquery.js']['data'] = drupal_get_path('theme', '[theme_machine_name]') .
    '/js/jquery-1.8.3.min.js';

  $javascript['misc/jquery.js']['version'] = '1.8.3';

}

Shaun Dychko
fuente
Que requiere un tema de administración diferente no es realmente una solución, a menos que pueda proporcionar una lista de temas que va a trabajar con este método. Supongo que sería muy, muy pocos. Además, es muy probable que esos temas también usen jQuery, lo que definitivamente conduciría a los problemas que el módulo de actualización de jQuery fue diseñado específicamente para solucionar
Clive
0

No estoy seguro de cuál es su propósito aquí, pero cuando necesitaba una versión específica para el desarrollo de módulos personalizados, pude hacerlo utilizando jQuery.noConflict .

Es un trabajo adicional en comparación con el módulo jquery_update (que al OP no parece importarle), pero significa que no tiene que preocuparse por si arruinará toda su instalación de drupal.

Duda1
fuente