aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/assets/js/click_a.js
blob: 81b12fd75c890f60c971598c3d7139607a84c6a5 (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
52
// 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' && element.getAttribute('href') !== '#') {
      var url = element.getAttribute('href');
      if (url.includes('photoset_token')) return;


      if (!prevented) {
        console.log('Click Intercept', url);
        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);
}