diff options
Diffstat (limited to 'app/src/main/assets/js/click_a.coffee')
-rw-r--r-- | app/src/main/assets/js/click_a.coffee | 48 |
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 |