From dcc7e1ff5ae28b700e12ecf75d403001fc9c2152 Mon Sep 17 00:00:00 2001 From: mrmr1993 Date: Sat, 6 Dec 2014 21:58:04 +0000 Subject: Only consider fullscreen elements' children for link hints --- content_scripts/link_hints.coffee | 7 ++++++- lib/dom_utils.coffee | 6 +++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/content_scripts/link_hints.coffee b/content_scripts/link_hints.coffee index 24bd7126..80d091dd 100644 --- a/content_scripts/link_hints.coffee +++ b/content_scripts/link_hints.coffee @@ -141,7 +141,12 @@ LinkHints = # of digits needed to enumerate all of the links on screen. # getVisibleClickableElements: -> - resultSet = DomUtils.evaluateXPath(@clickableElementsXPath, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE) + # If we are fullscreen, only consider elements contained in the fullscreen element. + resultType = XPathResult.ORDERED_NODE_SNAPSHOT_TYPE + resultSet = if document.webkitIsFullScreen + DomUtils.evaluateXPath(@clickableElementsXPath, resultType, document.webkitFullscreenElement) + else + DomUtils.evaluateXPath(@clickableElementsXPath, resultType) visibleElements = [] diff --git a/lib/dom_utils.coffee b/lib/dom_utils.coffee index 21018049..5f316c08 100644 --- a/lib/dom_utils.coffee +++ b/lib/dom_utils.coffee @@ -33,13 +33,13 @@ DomUtils = makeXPath: (elementArray) -> xpath = [] for element in elementArray - xpath.push("//" + element, "//xhtml:" + element) + xpath.push(".//" + element, ".//xhtml:" + element) xpath.join(" | ") - evaluateXPath: (xpath, resultType) -> + evaluateXPath: (xpath, resultType, contextNode = document.documentElement) -> namespaceResolver = (namespace) -> if (namespace == "xhtml") then "http://www.w3.org/1999/xhtml" else null - document.evaluate(xpath, document.documentElement, namespaceResolver, resultType, null) + document.evaluate(xpath, contextNode, namespaceResolver, resultType, null) # # Returns the first visible clientRect of an element if it exists. Otherwise it returns null. -- cgit v1.2.3