elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web (Moderador: #!drvy)
| | |-+  Capturar evento click "Open Link in New Tab"
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Capturar evento click "Open Link in New Tab"  (Leído 2,860 veces)
kakashi20


Desconectado Desconectado

Mensajes: 435


Ver Perfil
Capturar evento click "Open Link in New Tab"
« en: 6 Junio 2018, 15:26 pm »

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
  1. (function ($) {
  2.  
  3.    ninja_href(".ninja-href");
  4.  
  5. function ninja_href_call(e,which)
  6. {
  7.  
  8.  var ninja_url = e.target.getAttribute('data-ninja-url');
  9.  var ninja_target = e.target.getAttribute('data-ninja-target');
  10.  
  11.  if(ninja_target == null || typeof ninja_target == undefined || which === 3)
  12.  {
  13.    ninja_target = "_self";
  14.  }
  15.  
  16.  if(which === 2)
  17.  {
  18.    ninja_target = "_blank";
  19.  }
  20.  
  21.  
  22.  var win = window.open(ninja_url, ninja_target);
  23.  if (win && ninja_target == "_blank")
  24.  {
  25.    win.focus();
  26.  }
  27. }
  28.  
  29.  
  30.  
  31. function ninja_href(element)
  32. {
  33.  if(element == null || typeof element == undefined){
  34.    element = ".ninja-href";
  35.  }
  36.  
  37.  if (document.addEventListener)
  38.  {
  39.    document.addEventListener('click', function(e) {
  40.      if(e.target && e.target.matches(element))
  41.      {
  42.        if (e.which === 1 || e.which === 2)
  43.        {
  44.          e.preventDefault();
  45.          ninja_href_call(e,e.which);
  46.  
  47.        }
  48.      }
  49.    }, false);
  50.  
  51.    document.addEventListener('mousedown', function(e) {
  52.        if(e.target && e.target.matches(element))
  53.        {
  54.            if (e.which === 2)
  55.            {
  56.                e.preventDefault();
  57.                ninja_href_call(e,e.which);
  58.  
  59.            }
  60.        }
  61.  
  62.    }, false);
  63.  
  64.    document.addEventListener('contextmenu', function(e) {
  65.        console.warn(e);
  66.      if(e.target && e.target.matches(element))
  67.      {
  68.  
  69.      }
  70.    }, false);
  71.  } else {
  72.    document.attachEvent('click', function() {
  73.      if(e.target && e.target.matches(element))
  74.      {
  75.        if (e.which === 1 || e.which === 2)
  76.        {
  77.          e.preventDefault();
  78.          ninja_href_call(e,e.which);
  79.  
  80.        }
  81.      }
  82.    });
  83.  
  84.  }
  85.  
  86. }
  87.  
  88. }(window.jQuery));

Alguna idea

Gracias


En línea

#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.855



Ver Perfil WWW
Re: Capturar evento click "Open Link in New Tab"
« Respuesta #1 en: 6 Junio 2018, 15:32 pm »

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


En línea

kakashi20


Desconectado Desconectado

Mensajes: 435


Ver Perfil
Re: Capturar evento click "Open Link in New Tab"
« Respuesta #2 en: 6 Junio 2018, 16:01 pm »

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
  1. <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
En línea

[u]nsigned


Desconectado Desconectado

Mensajes: 2.397

JS/Node developer


Ver Perfil WWW
Re: Capturar evento click "Open Link in New Tab"
« Respuesta #3 en: 12 Junio 2018, 23:10 pm »

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...
En línea

No hay atajo ante la duda, el misterio se hace aquí...
Se hace carne en cada uno, el misterio es existir!
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines