Як оновити jQuery до останньої версії, яку я можу завантажити?


33

Я використовую Drupal 7, який використовує jQuery 1.4 за замовчуванням? Як я можу оновити її до останньої версії (наразі 1.7)?


1
Я не хочу використовувати модуль, хочу виробляти.
Кармакома

Оновлення jQuery в Drupal вручну було б дуже складним і ризикованим навіть для самих досвідчених розробників Drupal. Вам слід скористатися порадою Clive та скористатися оновленням jQuery.
sheena_d

Я переходжу до файлу misc-jquery.js через ftp і замінюю новий код jquery. Правильно?
Кармакома

наскільки я знаю, misc-jquery.js не є точно такою ж копією версії jquery. Однак, згідно з git, drupalcode.org/project/jquery_update.git/tree/refs/heads/… , також може бути підтримка 1.7.
АйешК

@Patrick Kenny Я не думаю, що це правильно - я можу вибрати jquery 1.8, використовуючи jquery_update станом на сьогодні
dv1ejack

Відповіді:


44

Один з способів встановити версію Dev з JQuery Update , який дає вам можливість використовувати JQuery 1,7 (відвідавши сторінку налаштувань на http://mysite.com/admin/config/development/jquery_update ).

Але будьте обережні, в даний час відомо, що зламати JavaScript в інших місцях на сайті (наприклад, спадання віджетів на сторінці Manage Fields більше не працюватиме). Якщо ви готові виправити це та будь-які інші невеликі роздратування, це, мабуть, найкраща ставка. Слід також зауважити, що використання dev-версії модуля не є без ризиків, оскільки шанси на його помилки набагато вищі, ніж використання конкретного випуску.

Якщо ви хочете зробити це вручну, тоді вам доведеться переписати багато основного коду JavaScript, щоб ваш сайт працював так, як очікувалося; jQuery змінив дуже багато між версіями 1.4 / 1.5 та 1.7, тому багато основного коду Javascript Drupal просто не працюватимуть з ним.

Якщо ви хочете просто залишити версію jQuery 1.7, ви, можливо hook_js_alter(), зможете реалізувати , вимкнути основний файл jQuery і додати своє місце на його місце:

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

Щойно ви зробите це, відкрийте Інструменти для розробників / Firebug, і ви побачите всі зміни, які вам потрібно буде внести, щоб заставити решту сайту JS працювати :)

ОНОВЛЕННЯ

Остання версія оновлення jQuery ( 7.x-2.3 під час написання) тепер дозволить оновити jQuery до v1.8. Дуже круто.

Модуль jQuery Multi - це ще один варіант, завдяки Горону за те, що він вказав це у коментарях. Як він також зазначає, цей модуль має стабільний випуск і не порушує жодного існуючого JavaScript.


Людина такс !!! Я це шукав деякий час! У моєму випадку я просто хотів завантажити іншу версію jQuery за темою, тому я просто замінив MYMODULE_js_alter на MYTHEME_js_alter та drupal_get_path ('тема', 'MYTHEME') на drupal_get_path ('модуль', 'MYMODULE')
victmo

1
Остерігайтеся, Drupal постачається з власним набором файлів JavaScript, написаних для роботи зі старим jQuery і несумісним з jQuery 1.7 або 1.8. Останнє оновлення jQuery забезпечує файли заміни для них.
П'єр Буйле

1
Вам потрібна версія dev-модуля, стабільна версія не має опції для 1.7
Clive

2
jQuery Multi - це ще одна опція, яка не вимагає версії розробника і не порушує жодного JS. Може додати його як опцію або видалити "Єдиний спосіб"?
goron

1
@goron Добре, дякую. Частина цієї відповіді, ймовірно, застаріла. Зараз я спробую її скоро оновити
Клайв

4

Також слід розглянути можливість використання мультимодуля jquery, який дозволяє використовувати більше однієї версії jquery. Чудовий модуль, я використовую його для Druapl 7 та 6 у всіх своїх проектах.


2

Натхненні документацією крюка_js_alter працюють наступні. Ви можете розмістити його в template.php теми. Для цього потрібно використовувати іншу тему адміністратора, щоб уникнути конфлікту з ядром Drupal, і передбачається, що jquery-1.8.3.min.js розташований у папці під назвою 'js' у межах теми (підлаштовуйтесь відповідно до відповідності).

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';

}


Вимагаючи іншу тему адміністратора насправді не є рішенням, якщо ви не можете надати список тем , які будуть працювати з цим методом. Я здогадуюсь, це було б дуже, дуже мало. Плюс ці теми, ймовірно, також використовуватиму jQuery, що, безумовно, призведе до проблем, які спеціально розроблений модуль оновлення jQuery
Clive

0

Я не впевнений, у чому тут ваша мета, але коли мені потрібна була конкретна версія для розробки спеціального модуля, я змогла це зробити за допомогою jQuery.noConflict .

Це додаткова робота порівняно з модулем jquery_update (який ОП, здається, не проти), але це означає, що вам не доведеться турбуватися про те, чи збираєтесь ви зіпсувати всю вашу установку drupal.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.