From e6a529ea00033d44226581c48df4e84f4cb80237 Mon Sep 17 00:00:00 2001 From: mrmr1993 Date: Tue, 15 Aug 2017 19:53:35 +0100 Subject: FF: Simulate default action for clicking links with link hints --- content_scripts/link_hints.coffee | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'content_scripts') diff --git a/content_scripts/link_hints.coffee b/content_scripts/link_hints.coffee index eeadfc0c..f06ef786 100644 --- a/content_scripts/link_hints.coffee +++ b/content_scripts/link_hints.coffee @@ -11,6 +11,7 @@ # The "name" property below is a short-form name to appear in the link-hints mode's name. It's for debug only. # isMac = KeyboardUtils.platform == "Mac" +simulateClickDefaultAction = true OPEN_IN_CURRENT_TAB = name: "curr-tab" indicator: "Open link in current tab" @@ -384,7 +385,16 @@ class LinkHintsMode window.focus() DomUtils.simulateSelect clickEl else - clickActivator = (modifiers) -> (link) -> DomUtils.simulateClick link, modifiers + clickActivator = (modifiers) -> (link) -> + defaultActionsTriggered = DomUtils.simulateClick link, modifiers + if simulateClickDefaultAction and + defaultActionsTriggered[3] and link.tagName?.toLowerCase() == "a" and + modifiers? and modifiers.metaKey == isMac and modifiers.ctrlKey == not isMac + # We've clicked a link that *should* open in a new tab. If simulateClickDefaultAction is true, + # we assume the popup-blocker is active, and simulate opening the new tab ourselves. + chrome.runtime.sendMessage {handler: "openUrlInNewTab", url: link.href, active: + modifiers.shiftKey == true} + linkActivator = @mode.linkActivator ? clickActivator @mode.clickModifiers # TODO: Are there any other input elements which should not receive focus? if clickEl.nodeName.toLowerCase() in ["input", "select"] and clickEl.type not in ["button", "submit"] -- cgit v1.2.3