diff options
| author | Jez Ng | 2012-01-26 12:55:40 -0500 |
|---|---|---|
| committer | Jez Ng | 2012-01-26 13:21:31 -0500 |
| commit | a4286bc54fcccfbddfe1b77babd02c652b71ab49 (patch) | |
| tree | 7f46a2690f948852a4ba9ffa99b859db81864dc7 /lib/domUtils.js | |
| parent | ad981199cbb0d3542550713f7658a1726c0c8b24 (diff) | |
| download | vimium-a4286bc54fcccfbddfe1b77babd02c652b71ab49.tar.bz2 | |
Simulate the full sequence of mouse click events.
Some sites expect it, e.g. GMail.
Diffstat (limited to 'lib/domUtils.js')
| -rw-r--r-- | lib/domUtils.js | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/lib/domUtils.js b/lib/domUtils.js index 700e1920..fd182c59 100644 --- a/lib/domUtils.js +++ b/lib/domUtils.js @@ -80,13 +80,15 @@ var domUtils = { simulateClick: function(element, modifiers) { modifiers = modifiers || {}; - var event = document.createEvent("MouseEvents"); - event.initMouseEvent("click", true, true, window, 1, 0, 0, 0, 0, modifiers.ctrlKey, false, false, - modifiers.metaKey, 0, null); - - // Debugging note: Firefox will not execute the element's default action if we dispatch this click event, - // but Webkit will. Dispatching a click on an input box does not seem to focus it; we do that separately - element.dispatchEvent(event); + var eventSequence = [ "mouseover", "mousedown", "mouseup", "click" ]; + for (var i = 0; i < eventSequence.length; i++) { + var event = document.createEvent("MouseEvents"); + event.initMouseEvent(eventSequence[i], true, true, window, 1, 0, 0, 0, 0, modifiers.ctrlKey, false, false, + modifiers.metaKey, 0, null); + // Debugging note: Firefox will not execute the element's default action if we dispatch this click event, + // but Webkit will. Dispatching a click on an input box does not seem to focus it; we do that separately + element.dispatchEvent(event); + } }, }; |
