Возможно ли переопределить / обновить прототип версии 1.4 до версии 1.7 на другом сайте с помощью javascript?

#javascript #prototypejs #conflict #jquery

#javascript #prototypejs #конфликт #jquery

Вопрос:

(Я не совсем уверен, как озаглавить этот вопрос, не стесняйтесь редактировать).

Я встраиваю виджет JS на другой веб-сайт, который использует Prototype.js Версия 1.4. Я использую jQuery в своем виджете, поэтому он уже работает в бесконфликтном режиме. (Я где-то читал, что версия 1.4 prototype «просто плохо работает» с jQuery, даже в режиме отсутствия конфликтов. Я могу уточнить, но это, вероятно, другой вопрос.)

Я не могу изменить, какую версию прототипа включает клиентский веб-сайт, но если бы я мог «выгрузить и перезагрузить» прототип с последней версией 1.7, это решило бы мои проблемы с конфликтом.

Есть идеи, возможно ли это? Спасибо

Ответ №1:

Вряд ли.

Вы могли бы изменить src атрибут <script> тега, который включает Prototype 1.4. Это можно было бы сделать в $(document).ready();

Однако задача заключалась бы в том, чтобы сделать это (запустить Prototype 1.7) до запуска остального кода / событий на странице. Поскольку события jQuery и Prototype конкурируют, нетривиально узнать, что сработало, а что нет. Гораздо меньше перезагрузки кода.

Я уверен, что это возможно с помощью какого-то блокирующего вызова. Может быть, кто-нибудь опубликует его. Но тогда вам приходится иметь дело с каким-то синхронным вызовом, что делать, если ресурс недоступен и т.д.

Я думаю, вам было бы проще разобраться, как изменить исходный код. В любом случае, это правильно в долгосрочной перспективе.