Sé que esto es un hecho y lo solucionaron cosa, pero esto es lo que estoy usando para resolver el problema en mi aplicación.
if (!e.target.hasAttribute("target")) {
e.preventDefault();
e.target.setAttribute("target", "_blank");
e.target.click();
return;
}
Básicamente lo que está pasando aquí es corro un cheque por si el enlace tiene target=_blank
atributo. Si no lo hace, se detiene el enlace de activación, lo configura para abrir en una nueva ventana y luego hace clic en él programáticamente.
Puede ir un paso más allá y saltar a la interrupción del clic original (y hacer que el código mucho más compacto) al tratar de esto:
if (!e.target.hasAttribute("target")) {
e.target.setAttribute("target", "_blank");
}
Si estaba utilizando jQuery para abstraer la implementación de añadir un atributo multi-navegador, se debe utilizar esto en vez de e.target.setAttribute("target", "_blank")
:
jQuery(event.target).attr("target", "_blank")
es posible que tenga que volver a trabajar para adaptarse a su uso-caso exacto, pero así es como me rasqué la propia picazón.
Aquí hay un demo en acción para que te metas con.
(El eslabón de jsFiddle regresa a esta discusión .. no hay necesidad de una nueva pestaña :))
¿Hm? 'target =" _ top "' no se abre en una nueva ventana - 'target =" _ blank "' hace. – Tomalak
Si el enlace ya se está abriendo en una nueva ventana (debido a target = "_ blank") y el manejador de clics de javascript ya está actualizando su base de datos, ¿por qué debería abrir la nueva ventana con Javascript? –