Wie aktualisiere ich jQuery auf die neueste Version, die ich herunterladen kann?

33

Ich verwende Drupal 7, das standardmäßig jQuery 1.4 verwendet. Wie kann ich es auf die neueste Version (derzeit 1.7) aktualisieren?

Karmacoma
quelle
1
Ich möchte kein Modul verwenden, möchte manuel.
Karmacoma
Ein manuelles Upgrade von jQuery in Drupal wäre selbst für die erfahrensten Drupal-Entwickler sehr kompliziert und riskant. Sie sollten den Rat von Clive befolgen und jQuery Update verwenden.
sheena_d
Ich gehe per FTP zur Datei misc-jquery.js und ersetze den neuen jquery-Code. Recht?
Karmacoma
misc-jquery.js ist meines Wissens nicht exakt dieselbe Kopie einer jquery-Version. Laut git, drupalcode.org/project/jquery_update.git/tree/refs/heads/… , sollte es jedoch auch eine 1.7-Unterstützung geben.
AyeshK
@Patrick Kenny Ich glaube nicht, dass das richtig ist - ich kann ab heute jquery 1.8 mit jquery_update auswählen
doub1ejack 31.10.13

Antworten:

44

Eine Möglichkeit besteht darin, die Entwicklungsversion von jQuery Update zu installieren , mit der Sie jQuery 1.7 verwenden können (indem Sie die Einstellungsseite unter http://meinewebsite.com/admin/config/development/jquery_update aufrufen ).

Beachten Sie jedoch, dass derzeit bekannt ist, dass JavaScript an anderer Stelle auf der Website beschädigt wird (z. B. funktioniert das Widget-Dropdown auf einer Seite zum Verwalten von Feldern nicht mehr). Wenn Sie bereit sind, das und andere kleine Probleme zu beheben, ist dies wahrscheinlich die beste Wahl. Sie sollten auch beachten, dass die Verwendung der Dev-Version eines Moduls nicht ohne Risiken ist, da die Wahrscheinlichkeit, dass es Fehler aufweist, viel höher ist als die Verwendung einer bestimmten Version.

Wenn Sie es manuell tun möchten, müssen Sie viel JavaScript-Code neu schreiben, damit Ihre Website wie erwartet funktioniert. jQuery hat zwischen Version 1.4 / 1.5 und 1.7 eine Menge verändert, so dass der Drupal-Javascript-Kerncode einfach nicht damit funktioniert.

Wenn Sie nur eine Version von jQuery 1.7 einbinden möchten, können Sie diese wahrscheinlich implementieren hook_js_alter(), die jQuery-Kerndatei entfernen und an ihrer Stelle eine eigene hinzufügen:

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']);
}

Wenn Sie das getan haben, öffnen Sie Developer Tools / Firebug und Sie werden alle Änderungen sehen, die Sie vornehmen müssen, damit der Rest der Site JS funktioniert :)

AKTUALISIEREN

Mit der neuesten Version von jQuery Update ( 7.x-2.3 zum Zeitpunkt des Schreibens) können Sie jetzt jQuery auf v1.8 aktualisieren. Sehr cool.

Das jQuery Multi- Modul ist eine weitere Option, dank Goron, der darauf in den Kommentaren hingewiesen hat. Wie er auch bemerkt, hat dieses Modul eine stabile Version und wird kein vorhandenes Javascript beschädigen.

Clive
quelle
Thaks Mann !!! Ich habe eine Weile danach gesucht! In meinem Fall wollte ich nur eine andere Version von jQuery pro Thema laden, also habe ich MYMODULE_js_alter durch MYTHEME_js_alter und drupal_get_path ('theme', 'MYTHEME') durch drupal_get_path ('module', 'MYMODULE') ersetzt
victmo
1
Achtung, Drupal wird mit einem eigenen Satz von JavaScript-Dateien geliefert, die für eine alte jQuery geschrieben wurden und nicht mit jQuery 1.7 oder 1.8 kompatibel sind. Das neueste jQuery-Update bietet Ersatzdateien für diese.
Pierre Buyle
1
Sie benötigen die Dev-Version des Moduls, die stabile Version hat keine Option für 1.7
Clive
2
jQuery Multi ist eine weitere Option, die keine Dev-Version benötigt und keine JS-Fehler verursacht. Vielleicht als Option hinzufügen oder "Der einzige Weg" entfernen?
Goron
1
@ Goron Guter Punkt, danke. Einige dieser Antworten sind wahrscheinlich veraltet. Ich werde versuchen, sie bald zu aktualisieren
Clive
4

Sie sollten auch in Betracht ziehen, das Modul jquery multi zu verwenden, mit dem Sie mehr als eine Version von jquery verwenden können. Tolles Modul, ich benutze es für Druapl 7 und 6 für alle meine Projekte.

reiss
quelle
2

Inspiriert von der hook_js_alter- Dokumentation funktioniert Folgendes. Sie können es in die template.php Ihres Themas einfügen. Dies setzt voraus, dass Sie ein anderes Admin-Thema verwenden, um Konflikte mit dem Drupal-Kern zu vermeiden, und dass sich jquery-1.8.3.min.js in einem Ordner namens 'js' innerhalb des Themas befindet (entsprechend anpassen).

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
quelle
Das Erfordernis eines anderen Admin-Themas ist keine Lösung, es sei denn, Sie können eine Liste von Themen bereitstellen, die mit dieser Methode funktionieren. Ich vermute, es wären sehr, sehr wenige. Außerdem würden diese Themen höchstwahrscheinlich auch jQuery verwenden, was definitiv zu den Problemen führen würde, für deren Behebung das jQuery-Aktualisierungsmodul speziell entwickelt wurde
Clive
0

Ich bin mir nicht sicher, was Ihr Zweck hier ist, aber als ich eine bestimmte Version für die Entwicklung von benutzerdefinierten Modulen benötigte, konnte ich dies mithilfe von jQuery.noConflict tun .

Es ist etwas mehr Arbeit im Vergleich zum Modul jquery_update (was das OP nicht zu stören scheint), aber es bedeutet, dass Sie sich keine Gedanken darüber machen müssen, ob Sie Ihre gesamte Drupal-Installation durcheinander bringen werden.

doub1ejack
quelle