aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/assets/js/click_a.js
blob: 24a08f56bcc1af985e00e0a85c50eb17f7f0a3a4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
// we will handle click events
if (!window.hasOwnProperty('frost_click_a')) {
  console.log('Registering frost_click_a');
  window.frost_click_a = true;

  var prevented = false;

  var _frostAClick = function(e) {


    /*
     * Commonality; check for valid target
     */
    var element = e.target || 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) {
        var url = element.getAttribute('href');
        console.log('Click Intercept', url);
        // if frost is injected, check if loading the url through an overlay works
        if (typeof Frost !== 'undefined' && Frost.loadUrl(url)) {
            e.stopPropagation();
            e.preventDefault();
        }
      }
    }
  }

  /*
   * 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
   */
  var _frostPreventClick = function() {
    console.log('Click prevented')
    prevented = true;
  }

  document.addEventListener('click', _frostAClick, true);

  document.addEventListener('touchstart', function _frostStart(e) {
    setTimeout(_frostPreventClick, 400);
  }, true);

  document.addEventListener('touchend', function _frostEnd(e) {
    prevented = false;
  }, true);
}