Compare Revisions

Creating JavaScript callbacks in components

Change Revisions

Revision 92836:

Revision 92836 by Nickolay on

Revision 92837:

Revision 92837 by liangzan on

Title:
Creating JavaScript callbacks in components
Creating JavaScript callbacks in components
Slug:
Creating_JavaScript_callbacks_in_components
Creating_JavaScript_callbacks_in_components
Tags:
XPCOM
XPCOM
Content:

Revision 92836
Revision 92837
n11      <a href="en/XPCOM">XPCOM</a> components use IDL to create in11      <a href="/en/XPCOM" title="en/XPCOM">XPCOM</a> components u
>nterfaces. These interfaces are used to manipulate the component >se IDL to create interfaces. These interfaces are used to manipul
>in C++ and JavaScript. A common pattern used with interfaces to c>ate the component in C++ and JavaScript. A common pattern used wi
>reate a bi-directional communication between two groups of code i>th interfaces to create a bi-directional communication between tw
>s the <a class="external" href="http://en.wikipedia.org/wiki/Obse>o groups of code is the <a class="external" href="http://en.wikip
>rver_pattern">observer (or listener) pattern</a>. Basically, the >edia.org/wiki/Observer_pattern">observer (or listener) pattern</a
>component defines an observer (or listener) interface which is im>>. Basically, the component defines an observer (or listener) int
>plemented by some external code and this implementation is passed>erface which is implemented by some external code and this implem
> to the component. The component can then call methods on the obs>entation is passed to the component. The component can then call 
>erver interface to signal the external code when predefined event>methods on the observer interface to signal the external code whe
>s occur. Here is a very simple example of the observer pattern:>n predefined events occur. Here is a very simple example of the o
 >bserver pattern:
n30var wordHandler {n30var wordHandler {
n41      You can find examples of this pattern all over the Mozilla n41      You can find examples of this pattern all over the Mozilla 
>codebase. In fact, there is even a specific interface for this fo>codebase. In fact, there is even a specific interface for this fo
>rm of push callbacks, <a href="en/NsIObserverService">nsIObserver>rm of push callbacks, <a href="/en/nsIObserverService" title="en/
>Service</a>.>nsIObserverService">nsIObserverService</a>.
n47      Another common use of the pattern is found in <code><a hrefn47      Another common use of the pattern is found in <code><a href
>="en/DOM/element.addEventListener">addEventListener</a></code> / >="/en/DOM/element.addEventListener" title="en/DOM/element.addEven
><code><a href="en/DOM/element.removeEventListener">removeEventLis>tListener">addEventListener</a></code> / <code><a href="/en/DOM/e
>tener</a></code>. A nice feature of <code>addEventListener</code>>lement.removeEventListener" title="en/DOM/element.removeEventList
> is that you can pass a JavaScript function in place of the callb>ener">removeEventListener</a></code>. A nice feature of <code>add
>ack listener interface. Remember (or discover) that <code>addEven>EventListener</code> is that you can pass a JavaScript function i
>tListener</code> is a method of the <code>{{ Source("dom/public/i>n place of the callback listener interface. Remember (or discover
>dl/events/nsIDOMEventTarget.idl", "nsIDOMEventTarget") }}</code> >) that <code>addEventListener</code> is a method of the <code>{{ 
>interface and is defined as such:>Source("dom/public/idl/events/nsIDOMEventTarget.idl", "nsIDOMEven
 >tTarget") }}</code> interface and is defined as such:
n51                      in <b>nsIDOMEventListener listener</b>,n51                      in <strong>nsIDOMEventListener listener</st
 >rong>,
t74[scriptable, <b>function, </b>uuid(...)]t74[scriptable, <strong>function, </strong>uuid(...)]

Back to History