Ситуация: я написал расширение Chrome, которое добавляет очень разные функциональные возможности на сайт. Я использую JQuery почти везде в своем коде, так как я делаю работу, которая требует гораздо больше кода в нативном JS. Моя jQuery версия указана только в разделе «Сценарии содержимого» в моем манифесте.
Проблема: веб-сайт, для которого написано мое расширение, уже внедряет очень старую JQuery версию, и от этого зависит множество их сценариев. Они вводят его, используя обычный тег script в <head>
. Теперь я хочу использовать свою собственную jQuery версию (более новую) для всех моих собственных сценариев в моем расширении, и сценарии сайта должны продолжать использовать свою старую версию. По сути, я хочу, чтобы моя версия jQuery была полностью отделена от их версии, но я не смог заставить ее работать. Всякий раз, когда я вызываю jQuery из любого из моих скриптов контента, он использует старую версию, внедренную в сайт, вместо новой версии в моих скриптах контента.
Я пытался использовать noConflict jQuery ( и, возможно, использовать ярлык, отличный от $), но когда я использую свое расширение для добавления скрипта в документ с помощью $ .noConflict (true), noConflict используется версией сайта jQuery, и все их скрипты ломаются, потому что $ is больше не доступен для них.
Я знаю, что две версии jQuery, загруженные на одну и ту же страницу, никогда не идеальны, но мне нужен более новый jQuery для моего кода, и я не могу форсировать скрипты сайта использовать более новую версию из-за их кода.
Есть ли способ указать jQuery использовать noConflict, пока вы вводите его?
Или, может быть, есть способ полностью отделить более новый jQuery и указать расширению не использовать тот, который введен на сайт?