Sunday, February 10, 2013

Использование jQuery плагинов в расширениях на базе Kangoextensions

Потребовалось мне использовать один jQuery плагин в расширении JediPlus



Прямое включение скрипта в  секцию  "content_scripts": [ ] эффекта не дало, кроме того обнаружилось. что и jquery нельзя указывать в этой секции, ибо тогда возникает конфликт в Опера с jquery используемом на сайте, причем даже в том случае, если расширение не активируется для этого сайта (т.е. фактически на всех сайтах).

Фреймворк предлагает еще вариант подключения - через @require

Т.е. в моём случае это выглядело вот так:

// @require jquery-1.8.3.min.js
// @require jquery.wysibb.js

Однако и это решение не давало результата, а генерило кучу ошибок с упоминанием $, jQuery и объектов.

Недолгие размышления привели к решению. Необходимо внести конструкцию
var $ = jQuery = window.$.noConflict(true); после вызова jquery или перед вызовом плагина. Если плагины не используются, то эту код надо внести прямо в начало контент скрипта, что отражено в доке по Канго.

Я правил прямо текст jquery.wysibb.js, но если не трогать исходники плагинов, то можно вставить дополнительный @require, например @require jquery-fix.js, содержащий одну эту строчку var $ = jQuery = window.$.noConflict(true);

И всё! Плагин заработал, правда не так как хочется, ибо плагин еще "хочет" разные другие ресурсы (css, картинки, шрифты).

No comments: