diff options
| author | Stephen Blott | 2018-02-18 09:38:41 +0000 |
|---|---|---|
| committer | GitHub | 2018-02-18 09:38:41 +0000 |
| commit | 75ed0d3d0fde690c4a3fbdce98f28d02309878bf (patch) | |
| tree | 37b5e7911896c1b7a26c3fee0f6260757092db15 /lib/dom_utils.coffee | |
| parent | 1aeaa8dfdc862ec9839a67fb131f841b744d0aaa (diff) | |
| parent | 62e5327676ca9c315259937915fdeebbaf181dc1 (diff) | |
| download | vimium-75ed0d3d0fde690c4a3fbdce98f28d02309878bf.tar.bz2 | |
Merge pull request #2960 from smblott-github/fix-firefox-link-hints
Fix Firefox link hints.
Diffstat (limited to 'lib/dom_utils.coffee')
| -rw-r--r-- | lib/dom_utils.coffee | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/lib/dom_utils.coffee b/lib/dom_utils.coffee index ebd9cf3d..c8f2e553 100644 --- a/lib/dom_utils.coffee +++ b/lib/dom_utils.coffee @@ -246,13 +246,22 @@ DomUtils = if element.selectionStart == 0 and element.selectionEnd == 0 element.setSelectionRange element.value.length, element.value.length - simulateClick: (element, modifiers) -> + simulateClick: (element, modifiers = {}) -> eventSequence = ["mouseover", "mousedown", "mouseup", "click"] for event in eventSequence - defaultActionShouldTrigger = @simulateMouseEvent event, element, modifiers - if event == "click" and defaultActionShouldTrigger and Utils.isFirefox() and element.target != "_blank" + defaultActionShouldTrigger = + if Utils.isFirefox() and Object.keys(modifiers).length == 0 and event == "click" and + element.target == "_blank" and element.href and + not element.hasAttribute("onclick") and not element.hasAttribute("_vimium-has-onclick-listener") + # Simulating a click on a target "_blank" element triggers the Firefox popup blocker. + # Note(smblott) This will be incorrect if there is a click listener on the element. + true + else + @simulateMouseEvent event, element, modifiers + if event == "click" and defaultActionShouldTrigger and Utils.isFirefox() # Firefox doesn't (currently) trigger the default action for modified keys. - DomUtils.simulateClickDefaultAction element, modifiers + if 0 < Object.keys(modifiers).length or element.target == "_blank" + DomUtils.simulateClickDefaultAction element, modifiers defaultActionShouldTrigger # return the values returned by each @simulateMouseEvent call. simulateMouseEvent: do -> |
