1 <!DOCTYPE html
> <html> <head> <title>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=
"bootstrap.html"> bootstrap.coffee
</a> <a class=
"source" href=
"chrome.html"> chrome.coffee
</a> <a class=
"source" href=
"console.html"> console.coffee
</a> <a class=
"source" href=
"unload.html"> unload.coffee
</a> <a class=
"source" href=
"window-utils.html"> window-utils.coffee
</a> <a class=
"source" href=
"button.html"> button.coffee
</a> <a class=
"source" href=
"commands.html"> commands.coffee
</a> <a class=
"source" href=
"events.html"> events.coffee
</a> <a class=
"source" href=
"help.html"> help.coffee
</a> <a class=
"source" href=
"hints.html"> hints.coffee
</a> <a class=
"source" href=
"marker.html"> marker.coffee
</a> <a class=
"source" href=
"prefs.html"> prefs.coffee
</a> <a class=
"source" href=
"utils.html"> utils.coffee
</a> <a class=
"source" href=
"vim.html"> vim.coffee
</a> </div> </div> </div> <table cellpadding=
"0" cellspacing=
"0"> <thead> <tr> <th class=
"docs"> <h1> 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">interfaces:
</span><span class=
"nx">Ci
</span><span class=
"p">,
</span> <span class=
"nv">classes:
</span><span class=
"nx">Cc
</span> <span class=
"p">}
</span> <span class=
"o">=
</span> <span class=
"nx">Components
</span>
3 <span class=
"nv">HTMLInputElement =
</span><span class=
"nx">Ci
</span><span class=
"p">.
</span><span class=
"nx">nsIDOMHTMLInputElement
</span>
4 <span class=
"nv">HTMLTextAreaElement =
</span><span class=
"nx">Ci
</span><span class=
"p">.
</span><span class=
"nx">nsIDOMHTMLTextAreaElement
</span>
5 <span class=
"nv">HTMLSelectElement =
</span><span class=
"nx">Ci
</span><span class=
"p">.
</span><span class=
"nx">nsIDOMHTMLSelectElement
</span>
6 <span class=
"nv">XULDocument =
</span><span class=
"nx">Ci
</span><span class=
"p">.
</span><span class=
"nx">nsIDOMXULDocument
</span>
7 <span class=
"nv">XULElement =
</span><span class=
"nx">Ci
</span><span class=
"p">.
</span><span class=
"nx">nsIDOMXULElement
</span>
8 <span class=
"nv">HTMLDocument =
</span><span class=
"nx">Ci
</span><span class=
"p">.
</span><span class=
"nx">nsIDOMHTMLDocument
</span>
9 <span class=
"nv">HTMLElement =
</span><span class=
"nx">Ci
</span><span class=
"p">.
</span><span class=
"nx">nsIDOMHTMLElement
</span>
10 <span class=
"nv">Window =
</span><span class=
"nx">Ci
</span><span class=
"p">.
</span><span class=
"nx">nsIDOMWindow
</span>
11 <span class=
"nv">ChromeWindow =
</span><span class=
"nx">Ci
</span><span class=
"p">.
</span><span class=
"nx">nsIDOMChromeWindow
</span>
12 <span class=
"nv">KeyboardEvent =
</span><span class=
"nx">Ci
</span><span class=
"p">.
</span><span class=
"nx">nsIDOMKeyEvent
</span>
14 <span class=
"nv">_sss =
</span><span class=
"nx">Cc
</span><span class=
"p">[
</span><span class=
"s">"@mozilla.org/content/style-sheet-service;
1"</span><span class=
"p">].
</span><span class=
"nx">getService
</span><span class=
"p">(
</span><span class=
"nx">Ci
</span><span class=
"p">.
</span><span class=
"nx">nsIStyleSheetService
</span><span class=
"p">)
</span>
15 <span class=
"nv">_clip =
</span><span class=
"nx">Cc
</span><span class=
"p">[
</span><span class=
"s">"@mozilla.org/widget/clipboard;
1"</span><span class=
"p">].
</span><span class=
"nx">getService
</span><span class=
"p">(
</span><span class=
"nx">Ci
</span><span class=
"p">.
</span><span class=
"nx">nsIClipboard
</span><span class=
"p">)
</span>
17 <span class=
"p">{
</span> <span class=
"nx">getPref
</span> <span class=
"p">}
</span> <span class=
"o">=
</span> <span class=
"nx">require
</span> <span class=
"s">'prefs
'</span>
19 <span class=
"k">class
</span> <span class=
"nx">Bucket
</span>
20 <span class=
"nv">constructor:
</span><span class=
"nf">(@idFunc, @newFunc) -
></span>
21 <span class=
"vi">@bucket =
</span><span class=
"p">{}
</span>
23 <span class=
"nv">get:
</span><span class=
"nf">(obj) -
></span>
24 <span class=
"nv">id =
</span><span class=
"nx">@idFunc
</span> <span class=
"nx">obj
</span>
25 <span class=
"k">if
</span> <span class=
"nv">container =
</span><span class=
"nx">@bucket
</span><span class=
"p">[
</span><span class=
"nx">id
</span><span class=
"p">]
</span>
26 <span class=
"k">return
</span> <span class=
"nx">container
</span>
27 <span class=
"k">else
</span>
28 <span class=
"k">return
</span> <span class=
"nx">@bucket
</span><span class=
"p">[
</span><span class=
"nx">id
</span><span class=
"p">]
</span> <span class=
"o">=
</span> <span class=
"nx">@newFunc
</span> <span class=
"nx">obj
</span>
30 <span class=
"nv">forget:
</span><span class=
"nf">(obj) -
></span>
31 <span class=
"k">delete
</span> <span class=
"nx">@bucket
</span><span class=
"p">[
</span><span class=
"nx">id
</span><span class=
"p">]
</span> <span class=
"k">if
</span> <span class=
"nv">id =
</span><span class=
"nx">@idFunc
</span> <span class=
"nx">obj
</span>
33 <span class=
"nv">isRootWindow =
</span><span class=
"nf">(window) -
></span>
34 <span class=
"nb">window
</span><span class=
"p">.
</span><span class=
"nx">location
</span> <span class=
"o">==
</span> <span class=
"s">"chrome://browser/content/browser.xul
"</span></pre></div> </td> </tr> <tr id=
"section-2"> <td class=
"docs"> <div class=
"pilwrap"> <a class=
"pilcrow" href=
"#section-2">¶</a> </div> <p>Returns the
<code>window
</code> from the currently active tab.
</p> </td> <td class=
"code"> <div class=
"highlight"><pre><span class=
"nv">getCurrentTabWindow =
</span><span class=
"nf">(event) -
></span>
35 <span class=
"k">if
</span> <span class=
"nb">window
</span> <span class=
"o">=
</span> <span class=
"nx">getEventWindow
</span> <span class=
"nx">event
</span>
36 <span class=
"k">if
</span> <span class=
"nv">rootWindow =
</span><span class=
"nx">getRootWindow
</span> <span class=
"nb">window
</span>
37 <span class=
"k">return
</span> <span class=
"nx">rootWindow
</span><span class=
"p">.
</span><span class=
"nx">gBrowser
</span><span class=
"p">.
</span><span class=
"nx">selectedTab
</span><span class=
"p">.
</span><span class=
"nx">linkedBrowser
</span><span class=
"p">.
</span><span class=
"nx">contentWindow
</span></pre></div> </td> </tr> <tr id=
"section-3"> <td class=
"docs"> <div class=
"pilwrap"> <a class=
"pilcrow" href=
"#section-3">¶</a> </div> <p>Returns the window associated with the event
</p> </td> <td class=
"code"> <div class=
"highlight"><pre><span class=
"nv">getEventWindow =
</span><span class=
"nf">(event) -
></span>
38 <span class=
"k">if
</span> <span class=
"nx">event
</span><span class=
"p">.
</span><span class=
"nx">originalTarget
</span> <span class=
"k">instanceof
</span> <span class=
"nx">Window
</span>
39 <span class=
"k">return
</span> <span class=
"nx">event
</span><span class=
"p">.
</span><span class=
"nx">originalTarget
</span>
40 <span class=
"k">else
</span>
41 <span class=
"nv">doc =
</span><span class=
"nx">event
</span><span class=
"p">.
</span><span class=
"nx">originalTarget
</span><span class=
"p">.
</span><span class=
"nx">ownerDocument
</span> <span class=
"o">or
</span> <span class=
"nx">event
</span><span class=
"p">.
</span><span class=
"nx">originalTarget
</span>
42 <span class=
"k">if
</span> <span class=
"nx">doc
</span> <span class=
"k">instanceof
</span> <span class=
"nx">HTMLDocument
</span> <span class=
"o">or
</span> <span class=
"nx">doc
</span> <span class=
"k">instanceof
</span> <span class=
"nx">XULDocument
</span>
43 <span class=
"k">return
</span> <span class=
"nx">doc
</span><span class=
"p">.
</span><span class=
"nx">defaultView
</span>
45 <span class=
"nv">getEventRootWindow =
</span><span class=
"nf">(event) -
></span>
46 <span class=
"k">if
</span> <span class=
"nb">window
</span> <span class=
"o">=
</span> <span class=
"nx">getEventWindow
</span> <span class=
"nx">event
</span>
47 <span class=
"k">return
</span> <span class=
"nx">getRootWindow
</span> <span class=
"nb">window
</span>
49 <span class=
"nv">getEventTabBrowser =
</span><span class=
"nf">(event) -
></span>
50 <span class=
"nx">cw
</span><span class=
"p">.
</span><span class=
"nx">gBrowser
</span> <span class=
"k">if
</span> <span class=
"nv">cw =
</span><span class=
"nx">getEventRootWindow
</span> <span class=
"nx">event
</span>
52 <span class=
"nv">getRootWindow =
</span><span class=
"nf">(window) -
></span>
53 <span class=
"k">return
</span> <span class=
"nb">window
</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">nsIInterfaceRequestor
</span><span class=
"p">)
</span>
54 <span class=
"p">.
</span><span class=
"nx">getInterface
</span><span class=
"p">(
</span><span class=
"nx">Ci
</span><span class=
"p">.
</span><span class=
"nx">nsIWebNavigation
</span><span class=
"p">)
</span>
55 <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">nsIDocShellTreeItem
</span><span class=
"p">)
</span>
56 <span class=
"p">.
</span><span class=
"nx">rootTreeItem
</span>
57 <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">nsIInterfaceRequestor
</span><span class=
"p">)
</span>
58 <span class=
"p">.
</span><span class=
"nx">getInterface
</span><span class=
"p">(
</span><span class=
"nx">Window
</span><span class=
"p">);
</span>
60 <span class=
"nv">isElementEditable =
</span><span class=
"nf">(element) -
></span>
61 <span class=
"k">return
</span> <span class=
"nx">element
</span><span class=
"p">.
</span><span class=
"nx">isContentEditable
</span> <span class=
"o">or
</span> <span class=
"o">\
</span>
62 <span class=
"nx">element
</span> <span class=
"k">instanceof
</span> <span class=
"nx">HTMLInputElement
</span> <span class=
"o">or
</span> <span class=
"o">\
</span>
63 <span class=
"nx">element
</span> <span class=
"k">instanceof
</span> <span class=
"nx">HTMLTextAreaElement
</span> <span class=
"o">or
</span> <span class=
"o">\
</span>
64 <span class=
"nx">element
</span> <span class=
"k">instanceof
</span> <span class=
"nx">HTMLSelectElement
</span>
66 <span class=
"nv">getWindowId =
</span><span class=
"nf">(window) -
></span>
67 <span class=
"k">return
</span> <span class=
"nb">window
</span><span class=
"p">.
</span><span class=
"nx">QueryInterface
</span><span class=
"p">(
</span><span class=
"nx">Components
</span><span class=
"p">.
</span><span class=
"nx">interfaces
</span><span class=
"p">.
</span><span class=
"nx">nsIInterfaceRequestor
</span><span class=
"p">)
</span>
68 <span class=
"p">.
</span><span class=
"nx">getInterface
</span><span class=
"p">(
</span><span class=
"nx">Components
</span><span class=
"p">.
</span><span class=
"nx">interfaces
</span><span class=
"p">.
</span><span class=
"nx">nsIDOMWindowUtils
</span><span class=
"p">)
</span>
69 <span class=
"p">.
</span><span class=
"nx">outerWindowID
</span>
71 <span class=
"nv">getSessionStore =
</span><span class=
"o">-
></span>
72 <span class=
"nx">Cc
</span><span class=
"p">[
</span><span class=
"s">"@mozilla.org/browser/sessionstore;
1"</span><span class=
"p">].
</span><span class=
"nx">getService
</span><span class=
"p">(
</span><span class=
"nx">Ci
</span><span class=
"p">.
</span><span class=
"nx">nsISessionStore
</span><span class=
"p">);
</span></pre></div> </td> </tr> <tr id=
"section-4"> <td class=
"docs"> <div class=
"pilwrap"> <a class=
"pilcrow" href=
"#section-4">¶</a> </div> <p>Function that returns a URI to the css file that's part of the extension
</p> </td> <td class=
"code"> <div class=
"highlight"><pre><span class=
"nv">cssUri =
</span><span class=
"nx">do
</span> <span class=
"nf">() -
></span>
73 <span class=
"nf">(name) -
></span>
74 <span class=
"nv">baseURI =
</span><span class=
"nx">Services
</span><span class=
"p">.
</span><span class=
"nx">io
</span><span class=
"p">.
</span><span class=
"nx">newURI
</span> <span class=
"nx">__SCRIPT_URI_SPEC__
</span><span class=
"p">,
</span> <span class=
"kc">null
</span><span class=
"p">,
</span> <span class=
"kc">null
</span>
75 <span class=
"nv">uri =
</span><span class=
"nx">Services
</span><span class=
"p">.
</span><span class=
"nx">io
</span><span class=
"p">.
</span><span class=
"nx">newURI
</span> <span class=
"s">"resources/
</span><span class=
"si">#{
</span> <span class=
"nx">name
</span> <span class=
"si">}
</span><span class=
"s">.css
"</span><span class=
"p">,
</span> <span class=
"kc">null
</span><span class=
"p">,
</span> <span class=
"nx">baseURI
</span>
76 <span class=
"k">return
</span> <span class=
"nx">uri
</span></pre></div> </td> </tr> <tr id=
"section-5"> <td class=
"docs"> <div class=
"pilwrap"> <a class=
"pilcrow" href=
"#section-5">¶</a> </div> <p>Loads the css identified by the name in the StyleSheetService as User Stylesheet
77 The stylesheet is then appended to every document, but it can be overwritten by
78 any user css
</p> </td> <td class=
"code"> <div class=
"highlight"><pre><span class=
"nv">loadCss =
</span><span class=
"nf">(name) -
></span>
79 <span class=
"nv">uri =
</span><span class=
"nx">cssUri
</span><span class=
"p">(
</span><span class=
"nx">name
</span><span class=
"p">)
</span>
80 <span class=
"nx">_sss
</span><span class=
"p">.
</span><span class=
"nx">loadAndRegisterSheet
</span><span class=
"p">(
</span><span class=
"nx">uri
</span><span class=
"p">,
</span> <span class=
"nx">_sss
</span><span class=
"p">.
</span><span class=
"nx">AGENT_SHEET
</span><span class=
"p">)
</span>
82 <span class=
"nx">unload
</span> <span class=
"o">-
></span>
83 <span class=
"nx">_sss
</span><span class=
"p">.
</span><span class=
"nx">unregisterSheet
</span><span class=
"p">(
</span><span class=
"nx">uri
</span><span class=
"p">,
</span> <span class=
"nx">_sss
</span><span class=
"p">.
</span><span class=
"nx">AGENT_SHEET
</span><span class=
"p">)
</span></pre></div> </td> </tr> <tr id=
"section-6"> <td class=
"docs"> <div class=
"pilwrap"> <a class=
"pilcrow" href=
"#section-6">¶</a> </div> <p>Processes the keyboard event and extracts string representation
84 of the key
<em>without modifiers
</em>.
85 Only processes that can be handled by the extension
</p>
87 <p>Currently we handle letters, Escape and Tab keys
</p> </td> <td class=
"code"> <div class=
"highlight"><pre><span class=
"nv">keyboardEventChar =
</span><span class=
"nf">(keyboardEvent) -
></span></pre></div> </td> </tr> <tr id=
"section-7"> <td class=
"docs"> <div class=
"pilwrap"> <a class=
"pilcrow" href=
"#section-7">¶</a> </div> <p>Ignore the key if Meta of Alt are pressed
</p> </td> <td class=
"code"> <div class=
"highlight"><pre> <span class=
"k">if
</span> <span class=
"nx">keyboardEvent
</span><span class=
"p">.
</span><span class=
"nx">metaKey
</span> <span class=
"o">or
</span> <span class=
"nx">keyboardEvent
</span><span class=
"p">.
</span><span class=
"nx">altKey
</span>
88 <span class=
"k">return
</span>
90 <span class=
"nv">key =
</span><span class=
"nx">keyboardEvent
</span><span class=
"p">.
</span><span class=
"nx">keyCode
</span>
91 <span class=
"nv">char =
</span><span class=
"nb">String
</span><span class=
"p">.
</span><span class=
"nx">fromCharCode
</span><span class=
"p">(
</span><span class=
"nx">key
</span><span class=
"p">)
</span>
92 <span class=
"nv">HINTCHARS =
</span><span class=
"nx">getPref
</span> <span class=
"s">'hint_chars
'</span>
94 <span class=
"k">if
</span> <span class=
"nx">key
</span> <span class=
"o">>=
</span> <span class=
"nx">KeyboardEvent
</span><span class=
"p">.
</span><span class=
"nx">DOM_VK_A
</span> <span class=
"o">and
</span> <span class=
"nx">key
</span> <span class=
"o"><=
</span> <span class=
"nx">KeyboardEvent
</span><span class=
"p">.
</span><span class=
"nx">DOM_VK_Z
</span>
95 <span class=
"k">if
</span> <span class=
"nx">keyboardEvent
</span><span class=
"p">.
</span><span class=
"nx">shiftKey
</span>
96 <span class=
"k">return
</span> <span class=
"nx">char
</span><span class=
"p">.
</span><span class=
"nx">toUpperCase
</span><span class=
"p">()
</span>
97 <span class=
"k">else
</span>
98 <span class=
"k">return
</span> <span class=
"nx">char
</span><span class=
"p">.
</span><span class=
"nx">toLowerCase
</span><span class=
"p">()
</span></pre></div> </td> </tr> <tr id=
"section-8"> <td class=
"docs"> <div class=
"pilwrap"> <a class=
"pilcrow" href=
"#section-8">¶</a> </div> <p>Allow additional chars from the hint chars list
</p> </td> <td class=
"code"> <div class=
"highlight"><pre> <span class=
"k">else
</span> <span class=
"k">if
</span> <span class=
"nx">HINTCHARS
</span><span class=
"p">.
</span><span class=
"nx">search
</span><span class=
"p">(
</span><span class=
"nx">char
</span><span class=
"p">)
</span> <span class=
"o">></span> <span class=
"o">-
</span><span class=
"mi">1</span>
99 <span class=
"k">return
</span> <span class=
"nx">char
</span>
100 <span class=
"k">else
</span>
101 <span class=
"k">switch
</span> <span class=
"nx">keyboardEvent
</span><span class=
"p">.
</span><span class=
"nx">keyCode
</span>
102 <span class=
"k">when
</span> <span class=
"nx">KeyboardEvent
</span><span class=
"p">.
</span><span class=
"nx">DOM_VK_ESCAPE
</span>
103 <span class=
"k">return
</span> <span class=
"s">'Esc
'</span>
104 <span class=
"k">when
</span> <span class=
"nx">KeyboardEvent
</span><span class=
"p">.
</span><span class=
"nx">DOM_VK_BACK_SPACE
</span>
105 <span class=
"k">return
</span> <span class=
"s">'Backspace
'</span></pre></div> </td> </tr> <tr id=
"section-9"> <td class=
"docs"> <div class=
"pilwrap"> <a class=
"pilcrow" href=
"#section-9">¶</a> </div> <p>Extracts string representation of the KeyboardEvent and adds
106 relevant modifiers (
<em>ctrl
</em>,
<em>alt
</em>,
<em>meta
</em>) in case they were pressed
</p> </td> <td class=
"code"> <div class=
"highlight"><pre><span class=
"nv">keyboardEventKeyString =
</span><span class=
"nf">(keyboardEvent) -
></span>
107 <span class=
"nv">char =
</span><span class=
"nx">keyboardEventChar
</span> <span class=
"nx">keyboardEvent
</span>
109 <span class=
"k">if
</span> <span class=
"nx">char
</span> <span class=
"o">and
</span> <span class=
"nx">keyboardEvent
</span><span class=
"p">.
</span><span class=
"nx">ctrlKey
</span>
110 <span class=
"nv">char =
</span><span class=
"s">"c-
</span><span class=
"si">#{
</span> <span class=
"nx">char
</span> <span class=
"si">}
</span><span class=
"s">"</span>
112 <span class=
"k">return
</span> <span class=
"nx">char
</span></pre></div> </td> </tr> <tr id=
"section-10"> <td class=
"docs"> <div class=
"pilwrap"> <a class=
"pilcrow" href=
"#section-10">¶</a> </div> <p>Simulate mouse click with full chain of event
113 Copied from Vimium codebase
</p> </td> <td class=
"code"> <div class=
"highlight"><pre><span class=
"nv">simulateClick =
</span><span class=
"nf">(element, modifiers) -
></span>
114 <span class=
"nb">document
</span> <span class=
"o">=
</span> <span class=
"nx">element
</span><span class=
"p">.
</span><span class=
"nx">ownerDocument
</span>
115 <span class=
"nb">window
</span> <span class=
"o">=
</span> <span class=
"nb">document
</span><span class=
"p">.
</span><span class=
"nx">defaultView
</span>
116 <span class=
"nx">modifiers
</span> <span class=
"o">||=
</span> <span class=
"p">{}
</span>
118 <span class=
"nv">eventSequence =
</span><span class=
"p">[
</span><span class=
"s">"mouseover
"</span><span class=
"p">,
</span> <span class=
"s">"mousedown
"</span><span class=
"p">,
</span> <span class=
"s">"mouseup
"</span><span class=
"p">,
</span> <span class=
"s">"click
"</span><span class=
"p">]
</span>
119 <span class=
"k">for
</span> <span class=
"nx">event
</span> <span class=
"k">in
</span> <span class=
"nx">eventSequence
</span>
120 <span class=
"nv">mouseEvent =
</span><span class=
"nb">document
</span><span class=
"p">.
</span><span class=
"nx">createEvent
</span><span class=
"p">(
</span><span class=
"s">"MouseEvents
"</span><span class=
"p">)
</span>
121 <span class=
"nx">mouseEvent
</span><span class=
"p">.
</span><span class=
"nx">initMouseEvent
</span><span class=
"p">(
</span><span class=
"nx">event
</span><span class=
"p">,
</span> <span class=
"kc">true
</span><span class=
"p">,
</span> <span class=
"kc">true
</span><span class=
"p">,
</span> <span class=
"nb">window
</span><span class=
"p">,
</span> <span class=
"mi">1</span><span class=
"p">,
</span> <span class=
"mi">0</span><span class=
"p">,
</span> <span class=
"mi">0</span><span class=
"p">,
</span> <span class=
"mi">0</span><span class=
"p">,
</span> <span class=
"mi">0</span><span class=
"p">,
</span> <span class=
"nx">modifiers
</span><span class=
"p">.
</span><span class=
"nx">ctrlKey
</span><span class=
"p">,
</span> <span class=
"kc">false
</span><span class=
"p">,
</span> <span class=
"kc">false
</span><span class=
"p">,
</span>
122 <span class=
"nx">modifiers
</span><span class=
"p">.
</span><span class=
"nx">metaKey
</span><span class=
"p">,
</span> <span class=
"mi">0</span><span class=
"p">,
</span> <span class=
"kc">null
</span><span class=
"p">)
</span></pre></div> </td> </tr> <tr id=
"section-11"> <td class=
"docs"> <div class=
"pilwrap"> <a class=
"pilcrow" href=
"#section-11">¶</a> </div> <p>Debugging note: Firefox will not execute the element's default action if we dispatch this click event,
123 but Webkit will. Dispatching a click on an input box does not seem to focus it; we do that separately
</p> </td> <td class=
"code"> <div class=
"highlight"><pre> <span class=
"nx">element
</span><span class=
"p">.
</span><span class=
"nx">dispatchEvent
</span><span class=
"p">(
</span><span class=
"nx">mouseEvent
</span><span class=
"p">)
</span></pre></div> </td> </tr> <tr id=
"section-12"> <td class=
"docs"> <div class=
"pilwrap"> <a class=
"pilcrow" href=
"#section-12">¶</a> </div> <p>Write a string into system clipboard
</p> </td> <td class=
"code"> <div class=
"highlight"><pre><span class=
"nv">writeToClipboard =
</span><span class=
"nf">(text) -
></span>
124 <span class=
"nv">str =
</span><span class=
"nx">Cc
</span><span class=
"p">[
</span><span class=
"s">"@mozilla.org/supports-string;
1"</span><span class=
"p">].
</span><span class=
"nx">createInstance
</span><span class=
"p">(
</span><span class=
"nx">Ci
</span><span class=
"p">.
</span><span class=
"nx">nsISupportsString
</span><span class=
"p">);
</span>
125 <span class=
"nv">str.data =
</span><span class=
"nx">text
</span>
127 <span class=
"nv">trans =
</span><span class=
"nx">Cc
</span><span class=
"p">[
</span><span class=
"s">"@mozilla.org/widget/transferable;
1"</span><span class=
"p">].
</span><span class=
"nx">createInstance
</span><span class=
"p">(
</span><span class=
"nx">Ci
</span><span class=
"p">.
</span><span class=
"nx">nsITransferable
</span><span class=
"p">);
</span>
128 <span class=
"nx">trans
</span><span class=
"p">.
</span><span class=
"nx">addDataFlavor
</span><span class=
"p">(
</span><span class=
"s">"text/unicode
"</span><span class=
"p">);
</span>
129 <span class=
"nx">trans
</span><span class=
"p">.
</span><span class=
"nx">setTransferData
</span><span class=
"p">(
</span><span class=
"s">"text/unicode
"</span><span class=
"p">,
</span> <span class=
"nx">str
</span><span class=
"p">,
</span> <span class=
"nx">text
</span><span class=
"p">.
</span><span class=
"nx">length
</span> <span class=
"o">*
</span> <span class=
"mi">2</span><span class=
"p">);
</span>
131 <span class=
"nx">_clip
</span><span class=
"p">.
</span><span class=
"nx">setData
</span> <span class=
"nx">trans
</span><span class=
"p">,
</span> <span class=
"kc">null
</span><span class=
"p">,
</span> <span class=
"nx">Ci
</span><span class=
"p">.
</span><span class=
"nx">nsIClipboard
</span><span class=
"p">.
</span><span class=
"nx">kGlobalClipboard
</span></pre></div> </td> </tr> <tr id=
"section-13"> <td class=
"docs"> <div class=
"pilwrap"> <a class=
"pilcrow" href=
"#section-13">¶</a> </div> <p>Write a string into system clipboard
</p> </td> <td class=
"code"> <div class=
"highlight"><pre><span class=
"nv">readFromClipboard =
</span><span class=
"nf">() -
></span>
132 <span class=
"nv">trans =
</span><span class=
"nx">Cc
</span><span class=
"p">[
</span><span class=
"s">"@mozilla.org/widget/transferable;
1"</span><span class=
"p">].
</span><span class=
"nx">createInstance
</span><span class=
"p">(
</span><span class=
"nx">Ci
</span><span class=
"p">.
</span><span class=
"nx">nsITransferable
</span><span class=
"p">);
</span>
133 <span class=
"nx">trans
</span><span class=
"p">.
</span><span class=
"nx">addDataFlavor
</span><span class=
"p">(
</span><span class=
"s">"text/unicode
"</span><span class=
"p">);
</span>
135 <span class=
"nx">_clip
</span><span class=
"p">.
</span><span class=
"nx">getData
</span> <span class=
"nx">trans
</span><span class=
"p">,
</span> <span class=
"nx">Ci
</span><span class=
"p">.
</span><span class=
"nx">nsIClipboard
</span><span class=
"p">.
</span><span class=
"nx">kGlobalClipboard
</span>
137 <span class=
"nv">str =
</span><span class=
"p">{}
</span>
138 <span class=
"nv">strLength =
</span><span class=
"p">{}
</span>
140 <span class=
"nx">trans
</span><span class=
"p">.
</span><span class=
"nx">getTransferData
</span><span class=
"p">(
</span><span class=
"s">"text/unicode
"</span><span class=
"p">,
</span> <span class=
"nx">str
</span><span class=
"p">,
</span> <span class=
"nx">strLength
</span><span class=
"p">)
</span>
142 <span class=
"k">if
</span> <span class=
"nx">str
</span>
143 <span class=
"nv">str =
</span><span class=
"nx">str
</span><span class=
"p">.
</span><span class=
"nx">value
</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">nsISupportsString
</span><span class=
"p">);
</span>
144 <span class=
"k">return
</span> <span class=
"nx">str
</span><span class=
"p">.
</span><span class=
"nx">data
</span><span class=
"p">.
</span><span class=
"nx">substring
</span> <span class=
"mi">0</span><span class=
"p">,
</span> <span class=
"nx">strLength
</span><span class=
"p">.
</span><span class=
"nx">value
</span> <span class=
"o">/
</span> <span class=
"mi">2</span>
146 <span class=
"k">return
</span> <span class=
"kc">undefined
</span></pre></div> </td> </tr> <tr id=
"section-14"> <td class=
"docs"> <div class=
"pilwrap"> <a class=
"pilcrow" href=
"#section-14">¶</a> </div> <p>Executes function
<code>func
</code> and mearues how much time it took
</p> </td> <td class=
"code"> <div class=
"highlight"><pre><span class=
"nv">timeIt =
</span><span class=
"nf">(func, msg) -
></span>
147 <span class=
"nv">start =
</span><span class=
"k">new
</span> <span class=
"nb">Date
</span><span class=
"p">().
</span><span class=
"nx">getTime
</span><span class=
"p">()
</span>
148 <span class=
"nv">result =
</span><span class=
"nx">func
</span><span class=
"p">()
</span>
149 <span class=
"nv">end =
</span><span class=
"k">new
</span> <span class=
"nb">Date
</span><span class=
"p">().
</span><span class=
"nx">getTime
</span><span class=
"p">()
</span>
151 <span class=
"nx">console
</span><span class=
"p">.
</span><span class=
"nx">log
</span> <span class=
"nx">msg
</span><span class=
"p">,
</span> <span class=
"nx">end
</span> <span class=
"o">-
</span> <span class=
"nx">start
</span>
152 <span class=
"k">return
</span> <span class=
"nx">result
</span>
154 <span class=
"nv">exports.Bucket =
</span><span class=
"nx">Bucket
</span>
155 <span class=
"nv">exports.isRootWindow =
</span><span class=
"nx">isRootWindow
</span>
156 <span class=
"nv">exports.getCurrentTabWindow =
</span><span class=
"nx">getCurrentTabWindow
</span>
157 <span class=
"nv">exports.getEventWindow =
</span><span class=
"nx">getEventWindow
</span>
158 <span class=
"nv">exports.getEventRootWindow =
</span><span class=
"nx">getEventRootWindow
</span>
159 <span class=
"nv">exports.getEventTabBrowser =
</span><span class=
"nx">getEventTabBrowser
</span>
161 <span class=
"nv">exports.getWindowId =
</span><span class=
"nx">getWindowId
</span>
162 <span class=
"nv">exports.getRootWindow =
</span><span class=
"nx">getRootWindow
</span>
163 <span class=
"nv">exports.isElementEditable =
</span><span class=
"nx">isElementEditable
</span>
164 <span class=
"nv">exports.getSessionStore =
</span><span class=
"nx">getSessionStore
</span>
166 <span class=
"nv">exports.loadCss =
</span><span class=
"nx">loadCss
</span>
168 <span class=
"nv">exports.keyboardEventKeyString =
</span><span class=
"nx">keyboardEventKeyString
</span>
169 <span class=
"nv">exports.simulateClick =
</span><span class=
"nx">simulateClick
</span>
170 <span class=
"nv">exports.readFromClipboard =
</span><span class=
"nx">readFromClipboard
</span>
171 <span class=
"nv">exports.writeToClipboard =
</span><span class=
"nx">writeToClipboard
</span>
172 <span class=
"nv">exports.timeIt =
</span><span class=
"nx">timeIt
</span>
174 </pre></div> </td> </tr> </tbody> </table> </div> </body> </html>