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:
(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
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
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:
<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
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...