2012-01-27 1 views
0

Я разрабатываю SDK для API сайта, который зависит от jQuery, и я бы хотел использовать модель пользовательских событий jQuery в SDK. Как я могу наилучшим образом наследовать, обернуть или иным образом использовать события jQuery, не требуя для них произвольного элемента DOM?Inheriting События jQuery Model

Текущая базовая структура ниже:

;(function($, global, undefined){ 

    function MySDK(opts){ 

    } 

    MySDK.prototype.on = function(evt, fn){}; 
    MySDK.prototype.trigger = function(evt, data){}; 

    if(global.MySDK){ 
    throw new Error("MySDK has already been defined"); 
    }else{ 
    global.MySDK = MySDK; 
    } 
})(jQuery, typeof window === "undefined" ? this : window); 

ответ

1

Вы можете прикрепить события и слушателей к window объекта.

Пример:

MySDK.prototype.trigger = function(evt, data) { 
    $(window).trigger(evt, data); 
}; 

Если вы пишете JavaScript для других потребляющих, я бы настоятельно рекомендуем вам заглянуть в Песочница вашу базу, запустив его внутри ГРЦ-менее iframe. Все лучше, если каждая версия SDK имеет свой собственный iframe.

+0

Не могу поверить, что я не думал об использовании оконного объекта, который должен работать отлично. Я хотел бы больше узнать о песочнице «iframe», есть ли у вас рекомендации по этому предмету? Я сделал некоторые поисковые запросы, но примеры, похоже, сосредоточены на использовании eval для инъекции кода, который кажется немного хакерским. – Zikes

+1

Один из разработчиков из Disqus сделал презентацию на нем. Вот слайд-колода. Множество примеров кода для изучения. http://www.slideshare.net/benvinegar/modern-iframe-programming-8281214 –