aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/assets/js/click_a.coffee
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/assets/js/click_a.coffee')
-rw-r--r--app/src/main/assets/js/click_a.coffee48
1 files changed, 48 insertions, 0 deletions
diff --git a/app/src/main/assets/js/click_a.coffee b/app/src/main/assets/js/click_a.coffee
new file mode 100644
index 00000000..e032b4ad
--- /dev/null
+++ b/app/src/main/assets/js/click_a.coffee
@@ -0,0 +1,48 @@
+prevented = false
+
+_frostAClick = (e) ->
+
+ ###
+ # Commonality; check for valid target
+ ###
+ element = e.target or e.srcElement
+ if element.tagName != "A"
+ element = element.parentNode
+ # Notifications is two layers under
+ if element.tagName != "A"
+ element = element.parentNode
+ if element.tagName == "A"
+ if !prevented
+ url = element.getAttribute("href")
+ console.log "Click Intercept #{url}"
+ # if frost is injected, check if loading the url through an overlay works
+ if Frost?.loadUrl(url) == true
+ e.stopPropagation()
+ e.preventDefault()
+ else
+ console.log "Click Intercept Prevented"
+ return
+
+###
+# On top of the click event, we must stop it for long presses
+# Since that will conflict with the context menu
+# Note that we only override it on conditions where the context menu
+# Will occur
+###
+
+_frostPreventClick = ->
+ console.log "Click prevented"
+ prevented = true
+ return
+
+document.addEventListener "click", _frostAClick, true
+clickTimeout = undefined
+document.addEventListener "touchstart", ((e) ->
+ clickTimeout = setTimeout(_frostPreventClick, 400)
+ return
+), true
+document.addEventListener "touchend", ((e) ->
+ prevented = false
+ clearTimeout clickTimeout
+ return
+), true