1 <!DOCTYPE html
> <html> <head> <title>window-utils.coffee
</title> <meta http-equiv=
"content-type" content=
"text/html; charset=UTF-8"> <link rel=
"stylesheet" media=
"all" href=
"docco.css" /> </head> <body> <div id=
"container"> <div id=
"background"></div> <div id=
"jump_to"> Jump To
… <div id=
"jump_wrapper"> <div id=
"jump_page"> <a class=
"source" href=
"commands.html"> commands.coffee
</a> <a class=
"source" href=
"console.html"> console.coffee
</a> <a class=
"source" href=
"event-handlers.html"> event-handlers.coffee
</a> <a class=
"source" href=
"hints.html"> hints.coffee
</a> <a class=
"source" href=
"marker.html"> marker.coffee
</a> <a class=
"source" href=
"utils.html"> utils.coffee
</a> <a class=
"source" href=
"vim.html"> vim.coffee
</a> <a class=
"source" href=
"window-utils.html"> window-utils.coffee
</a> </div> </div> </div> <table cellpadding=
"0" cellspacing=
"0"> <thead> <tr> <th class=
"docs"> <h1> window-utils.coffee
</h1> </th> <th class=
"code"> </th> </tr> </thead> <tbody> <tr id=
"section-1"> <td class=
"docs"> <div class=
"pilwrap"> <a class=
"pilcrow" href=
"#section-1">¶</a> </div> </td> <td class=
"code"> <div class=
"highlight"><pre><span class=
"p">{
</span> <span class=
"nv">classes:
</span><span class=
"nx">Cc
</span><span class=
"p">,
</span> <span class=
"nv">interfaces:
</span><span class=
"nx">Ci
</span><span class=
"p">,
</span> <span class=
"nv">utils:
</span><span class=
"nx">Cu
</span> <span class=
"p">}
</span> <span class=
"o">=
</span> <span class=
"nx">Components
</span>
3 <span class=
"nv">tools =
</span><span class=
"p">{}
</span>
4 <span class=
"nx">Cu
</span><span class=
"p">.
</span><span class=
"nx">import
</span> <span class=
"s">"resource://gre/modules/Services.jsm
"</span><span class=
"p">,
</span> <span class=
"nx">tools
</span>
6 <span class=
"nv">ww =
</span><span class=
"nx">tools
</span><span class=
"p">.
</span><span class=
"nx">Services
</span><span class=
"p">.
</span><span class=
"nx">ww
</span>
8 <span class=
"nv">runOnWindowLoad =
</span><span class=
"nf">(callback, window) -
></span>
9 <span class=
"k">if
</span> <span class=
"nb">window
</span><span class=
"p">.
</span><span class=
"nb">document
</span><span class=
"p">.
</span><span class=
"nx">readyState
</span> <span class=
"o">==
</span> <span class=
"s">'complete
'</span>
10 <span class=
"nx">callback
</span> <span class=
"nb">window
</span>
11 <span class=
"k">else
</span>
12 <span class=
"nv">onLoad =
</span><span class=
"o">-
></span>
13 <span class=
"nb">window
</span><span class=
"p">.
</span><span class=
"nx">removeEventListener
</span> <span class=
"s">'load
'</span><span class=
"p">,
</span> <span class=
"nx">arguments
</span><span class=
"p">.
</span><span class=
"nx">callee
</span><span class=
"p">,
</span> <span class=
"kc">false
</span>
14 <span class=
"nx">callback
</span><span class=
"p">(
</span><span class=
"nb">window
</span><span class=
"p">)
</span>
16 <span class=
"nb">window
</span><span class=
"p">.
</span><span class=
"nx">addEventListener
</span> <span class=
"s">'load
'</span><span class=
"p">,
</span> <span class=
"nx">onLoad
</span><span class=
"p">,
</span> <span class=
"kc">false
</span>
18 <span class=
"nv">applyToWindows =
</span><span class=
"nf">(callback) -
></span>
19 <span class=
"nv">winEnum =
</span><span class=
"nx">ww
</span><span class=
"p">.
</span><span class=
"nx">getWindowEnumerator
</span><span class=
"p">()
</span>
20 <span class=
"k">while
</span> <span class=
"nx">winEnum
</span><span class=
"p">.
</span><span class=
"nx">hasMoreElements
</span><span class=
"p">()
</span>
21 <span class=
"nb">window
</span> <span class=
"o">=
</span> <span class=
"nx">winEnum
</span><span class=
"p">.
</span><span class=
"nx">getNext
</span><span class=
"p">().
</span><span class=
"nx">QueryInterface
</span><span class=
"p">(
</span><span class=
"nx">Ci
</span><span class=
"p">.
</span><span class=
"nx">nsIDOMWindow
</span><span class=
"p">)
</span>
22 <span class=
"nx">runOnWindowLoad
</span> <span class=
"nx">callback
</span><span class=
"p">,
</span> <span class=
"nb">window
</span>
24 <span class=
"nv">isBrowserWindow =
</span><span class=
"nf">(window) -
></span>
25 <span class=
"k">return
</span> <span class=
"nb">window
</span><span class=
"p">.
</span><span class=
"nb">document
</span><span class=
"p">.
</span><span class=
"nx">documentElement
</span><span class=
"p">.
</span><span class=
"nx">getAttribute
</span><span class=
"p">(
</span><span class=
"s">"windowtype
"</span><span class=
"p">)
</span> <span class=
"o">==
</span> <span class=
"s">"navigator:browser
"</span>
27 <span class=
"k">class
</span> <span class=
"nx">WindowObserver
</span>
28 <span class=
"nv">constructor:
</span><span class=
"nf">(@delegate) -
></span>
30 <span class=
"nv">observe:
</span><span class=
"nf">(subject, topic, data) -
></span>
31 <span class=
"nb">window
</span> <span class=
"o">=
</span> <span class=
"nx">subject
</span><span class=
"p">.
</span><span class=
"nx">QueryInterface
</span><span class=
"p">(
</span><span class=
"nx">Ci
</span><span class=
"p">.
</span><span class=
"nx">nsIDOMWindow
</span><span class=
"p">)
</span>
32 <span class=
"k">switch
</span> <span class=
"nx">topic
</span>
33 <span class=
"k">when
</span> <span class=
"s">'domwindowopened
'</span>
34 <span class=
"nx">runOnWindowLoad
</span> <span class=
"nx">@delegate
</span><span class=
"p">.
</span><span class=
"nx">track
</span><span class=
"p">,
</span> <span class=
"nb">window
</span>
35 <span class=
"k">when
</span> <span class=
"s">'domwindowclosed
'</span>
36 <span class=
"nx">runOnWindowLoad
</span> <span class=
"nx">@delegate
</span><span class=
"p">.
</span><span class=
"nx">untrack
</span><span class=
"p">,
</span> <span class=
"nb">window
</span>
38 <span class=
"k">class
</span> <span class=
"nx">WindowTracker
</span>
40 <span class=
"nv">constructor:
</span><span class=
"nf">(@delegate) -
></span>
41 <span class=
"vi">@observer =
</span><span class=
"k">new
</span> <span class=
"nx">WindowObserver
</span> <span class=
"nx">@delegate
</span>
43 <span class=
"nv">start:
</span><span class=
"o">-
></span>
44 <span class=
"nx">applyToWindows
</span> <span class=
"nx">@delegate
</span><span class=
"p">.
</span><span class=
"nx">track
</span>
45 <span class=
"nx">ww
</span><span class=
"p">.
</span><span class=
"nx">registerNotification
</span> <span class=
"nx">@observer
</span>
47 <span class=
"nv">stop:
</span><span class=
"o">-
></span>
48 <span class=
"nx">ww
</span><span class=
"p">.
</span><span class=
"nx">unregisterNotification
</span> <span class=
"nx">@observer
</span>
49 <span class=
"nx">applyToWindows
</span> <span class=
"nx">@delegate
</span><span class=
"p">.
</span><span class=
"nx">untrack
</span>
52 <span class=
"nv">exports.runOnWindowLoad =
</span><span class=
"nx">runOnWindowLoad
</span>
53 <span class=
"nv">exports.applyToWindows =
</span><span class=
"nx">applyToWindows
</span>
54 <span class=
"nv">exports.WindowTracker =
</span><span class=
"nx">WindowTracker
</span>
55 <span class=
"nv">exports.isBrowserWindow =
</span><span class=
"nx">isBrowserWindow
</span>
57 </pre></div> </td> </tr> </tbody> </table> </div> </body> </html>