Capturar evento click "Open Link in New Tab"

Iniciado por kakashi20, 6 Junio 2018, 15:26 PM

0 Miembros y 1 Visitante están viendo este tema.

kakashi20

Hola

Estoy tratando de ocultar links ( cloaking links ) de sitios afiliados.

El problema que tengo es que puedo capturar los click: izquierdo, derecho y medio, pero cuando hago click derecho y me aparece el menu y escojo "open in new tab" no puedo capturar ese evento pars poder mostrar la url con los parametros UTM

Codigo:

Código (javascript) [Seleccionar]

(function ($) {

    ninja_href(".ninja-href");

function ninja_href_call(e,which)
{

  var ninja_url = e.target.getAttribute('data-ninja-url');
  var ninja_target = e.target.getAttribute('data-ninja-target');

  if(ninja_target == null || typeof ninja_target == undefined || which === 3)
  {
    ninja_target = "_self";
  }

  if(which === 2)
  {
    ninja_target = "_blank";
  }


  var win = window.open(ninja_url, ninja_target);
  if (win && ninja_target == "_blank")
  {
    win.focus();
  }
}



function ninja_href(element)
{
  if(element == null || typeof element == undefined){
    element = ".ninja-href";
  }

  if (document.addEventListener)
  {
    document.addEventListener('click', function(e) {
      if(e.target && e.target.matches(element))
      {
        if (e.which === 1 || e.which === 2)
        {
          e.preventDefault();
          ninja_href_call(e,e.which);

        }
      }
    }, false);

    document.addEventListener('mousedown', function(e) {
        if(e.target && e.target.matches(element))
        {
            if (e.which === 2)
            {
                e.preventDefault();
                ninja_href_call(e,e.which);

            }
        }

    }, false);

    document.addEventListener('contextmenu', function(e) {
        console.warn(e);
      if(e.target && e.target.matches(element))
      {

      }
    }, false);
  } else {
    document.attachEvent('click', function() {
      if(e.target && e.target.matches(element))
      {
        if (e.which === 1 || e.which === 2)
        {
          e.preventDefault();
          ninja_href_call(e,e.which);

        }
      }
    });

  }

}

}(window.jQuery));


Alguna idea

Gracias

#!drvy

No puedes capturar esos eventos.. básicamente porque son eventos interiores del propio navegador y no los exponen.

En vez de complicarte tanto con "esconder" los links con javascript, implementa una funcionalidad server-side.

Saludos

kakashi20

Actualmente estoy implementando eso en  wordpress, pero no se muy bien como lo podria hacer de ese lado.

Porque con el script simplemente lo llamo asi:

Código (html4strict) [Seleccionar]
<a target="_blank" class="ninja-href" data-ninja-url="<?php echo $full_link?>" data-ninja-target="_self" href="https://example.com/out"><?php echo $url?></a>

y hace el cloak a la url pero lo unico que no funciona es cuando se le da click derecho=>Open link in new tab

[u]nsigned

podrias dar mas info, no logro comprender lo que queres hacer. Estás usando tu propio servidor o donde tenes tu wp? queres borras ads de algun plugin o algo asi? podrias ponernos mas en contexto.

PD: no podes capturar eso con js, lo que podes hacer es no usar links directos, sino guardarlos codificados en base64 por ejemplo en tu codigo js, y lugo capturas el evento click de cada link y ahi si capturas el evento click y por medio de una funcion decodificadas y abis tu link de la forma que quieras...

No hay atajo ante la duda, el misterio se hace aquí...
Se hace carne en cada uno, el misterio es existir!