Как изолировать разные библиотеки javascript на одной странице?

Предположим, нам нужно встроить виджет на стороннюю страницу. Этот виджет может использовать, например, jquery, поэтому виджет несет с собой библиотеку jquery. Предположим, что на сторонней странице также используется jquery, но в другой версии. Как предотвратить конфликт между ними при встраивании виджетов? jquery.noConflict не подходит, потому что требуется вызвать этот метод для первой библиотеки jquery, которая загружается на странице, а это означает, что сторонний веб-сайт должен вызывать его. Идея заключается в том, что сторонний сайт не должен изменять или делать что-либо, кроме помещения тега с src в виджет для его использования.

Также это не проблема, в частности, с jquery - библиотека закрытия Google (даже скомпилированная) может в качестве примера.

Какие существуют решения для изоляции различных библиотек javascript, помимо очевидного iframe? Может быть, загрузка javascript в виде строки, а затем eval (с помощью Function ('code to eval'), а не eval ('code to eval')) в анонимной функции может помочь?

15
задан sha1dy 12 November 2010 в 13:12
поделиться