aboutsummaryrefslogtreecommitdiffstats
path: root/content_scripts
diff options
context:
space:
mode:
authormrmr19932014-12-17 11:12:58 +0000
committermrmr19932014-12-17 11:12:58 +0000
commitc7e2f1cdef2d5e99761d7bb8ecbad91f89de6958 (patch)
tree55de0303dcde83fb71d038a738234bc0e0ea9c1b /content_scripts
parent8c8ec835d673f0ec1cce242cf26cca077c845064 (diff)
downloadvimium-c7e2f1cdef2d5e99761d7bb8ecbad91f89de6958.tar.bz2
Inline DomUtils.getClickableElements
Diffstat (limited to 'content_scripts')
-rw-r--r--content_scripts/link_hints.coffee36
1 files changed, 35 insertions, 1 deletions
diff --git a/content_scripts/link_hints.coffee b/content_scripts/link_hints.coffee
index 2ffe818f..fe36cee0 100644
--- a/content_scripts/link_hints.coffee
+++ b/content_scripts/link_hints.coffee
@@ -130,7 +130,41 @@ LinkHints =
# of digits needed to enumerate all of the links on screen.
#
getVisibleClickableElements: ->
- resultSet = DomUtils.getClickableElements()
+ elements = Array::slice.call(document.documentElement.getElementsByTagName "*")
+ resultSet = []
+
+ for element in elements
+ isClickable = false
+ tagName = element.tagName.toLowerCase()
+ isClickable = (->
+ if element.hasAttribute "onclick"
+ true
+ else if element.hasAttribute "tabindex"
+ true
+ else if element.getAttribute "role" in ["button", "link"]
+ true
+ else if element.getAttribute("class")?.toLowerCase().indexOf("button") >= 0
+ true
+ else if element.getAttribute("contentEditable")?.toLowerCase() in ["", "contentEditable", "true"]
+ true
+ else if tagName == "a"
+ true
+ else if tagName == "img"
+ mapName = element.getAttribute "usemap"
+ if mapName
+ map = document.querySelector(mapName.replace /^#/, "")
+ areas = Array::slice.call(map.getElementsByTagName "area")
+ resultSet.concat areas
+ false
+ else if (tagName == "input" and DomUtils.isSelectable element) or tagName == "textarea"
+ not (element.disabled or element.readOnly)
+ else if (tagName == "input" and element.getAttribute("type")?.toLowerCase() != "hidden") or
+ tagName in ["button", "select"]
+ not element.disabled
+ else
+ false
+ )()
+ resultSet.push element if isClickable
visibleElements = []