2012-06-06 3 views
1

Любые идеи, что делает следующая строка?Вызов .fireEvent() без контекста в mootools

Что это за событие «Всплывающее окно» здесь?

fireEvent('Popup','ok'); 
+1

hm, позвольте мне угадать, что может быть http: // mootools. net/docs/core/Element/Element.Event do ??? – Christoph

+0

do downvote - это своеобразный краевой случай, который был замечен несколько раз из-за того, что люди не добавляли контекст к методам при применении к глобальному объекту, и это вызывает недоумение, поскольку оно делает его похожим на вызов глобальной функции, если это не , возможно, вопрос не задан правильно, но это, конечно, не плохо. см. мой ответ. –

ответ

2

Это, очевидно (и according to documentation), пожары событие 'Popup' типа с аргументом 'ok'. Это похоже на пользовательский тип события, поэтому, чтобы выяснить, что именно он делает и как он интерпретирует этот аргумент, вам нужно проконсультироваться с источником или документацией кода, который обрабатывает это событие.

5

События обычно делятся на 2 типа. DOMEvent и Class.Event.

Чаще всего последние представляют интерес. this.fireEvent('popup', 'ok'); позволит экземпляру узнать что-то замечательное.

используется в сочетании с [Options,Events] Mixins в классе, если ваш экземпляр был создан с:

var foo = new someclass({ 
    onPopup: function(status) { 
     console.log(status); // ok! 
     console.log(this); // the instance (foo); 
    } 
}); 

// later. 
foo.fireEvent('popup', 'fail'); 

Но в вашем случае, я не уверен, что это о классе, потому что:

Вы также можете использовать события в свободной/неоднозначной среде, например, в элементах DOM, где вы можете запускать события для пабов/суб различных компонентов. например. window.fireEvent('popup', 'ok'); - или как в вашем примере, fireEvent('popup') сам по себе - вызовет обратный вызов события в глобальном объекте окна, поскольку никакой другой контекст не был определен.

Это будет работать с тем, что вы добавили в блоке следующим образом:

window.addEvent('popup', function(status) { 

}); 

НЕ печатает объект контекста действительно дерьмовый для цепочки областей видимости операций поиска, а также читаемость. тот факт, что вы МОЖЕТЕ сделать только fireEvent('domready'), не означает, что вам следует. Тот, кто написал это, принимал глупые ярлыки, которые не способствовали удобочитаемости. fireEvent сам является свойством expando, исходящим от прототипа, это не глобальная переменная/функция, хотя она выглядит как одна в соответствии с кодом, который вы опубликовали ...

Смежные вопросы