¿Por qué CTRL-click no abre algunos enlaces en una pestaña nueva?

18

A veces, mientras navego, presiono Ctrl y hago clic en un enlace para abrirlo en una pestaña nueva. Sin embargo, en lugar de abrir en una nueva pestaña, se hace clic y se navega en la pestaña actual como si hubiera hecho clic normalmente sin mantener presionada la tecla Ctrl. Estoy seguro de que estoy manteniendo presionada la tecla Ctrl y que no hay fallas en el teclado o el mouse.

Ocasionalmente, se abrirá una nueva pestaña con el enlace, pero la pestaña actual también buscará el enlace simultáneamente.

Coldblackice
fuente
3
Tal vez no sean enlaces reales, en el sentido de que tal vez el "enlace" está utilizando una onclickoperación que podría interferir con el Ctrl + clic. ¿Puedes dar un ejemplo específico? meta.stackoverflow.com/questions/276138/…
imtheman
@imtheman Gran punto, sin embargo, no parece ser el caso, al menos en los ejemplos que he visto. Lo sé porque siempre paso el mouse sobre el enlace de antemano para verificar que muestra una URL en la barra de estado. Un ejemplo está aquí: nationaljournal.com/white-house/… En la columna / barra de la izquierda, los enlaces a otras historias parecen ser sus propias URL, verificadas incluso saltando a su ubicación en la fuente, sin embargo, ctrl-clic no no funciona, sino que actúa como si no se mantuviera ctrl.
Coldblackice
Si mira el código fuente de ese sitio, verá esto para uno de los enlaces:<a class="primary" href="/superuser//congress" onclick="var x=&quot;.tl(&quot;;s_objectID=&quot;http://www.nationaljournal.com/congress_1&quot;;return this.s_oc?this.s_oc(e):true">Congress</a>
imtheman
1
Si bien tiene un hrefatributo, el evento onclick lo sobrescribe.
imtheman
1
Escribí un complemento de Firefox para solucionar este problema. github.com/danielnixon/link-fixer
danielnixon

Respuestas:

8

JavaScript detrás de escena

Esto sucede cuando los desarrolladores de tales páginas web interceptan los clics del mouse con JavaScript y realizan solicitudes de red asincrónicas dentro del interceptor, potencialmente para rastrear sus clics. Cuando vuelve la llamada de red asíncrona, el JS realiza una redirección programática usando algo como:window.location.href = url;

Esta redirección programática siempre cargará la página en la misma pestaña, incluso si mantiene Ctrl( Cmden Mac).

Use MiddleMouse para anular

Al hacer clic en el botón central del mouse o seleccionar 'abrir en una pestaña nueva' en el menú contextual, se omitirá por completo el código interceptor de JavaScript y se abrirá un enlace como si no hubiera ningún código JavaScript.

Valentin Vasilyev
fuente
Esto no es del todo correcto. Si bien algunos diseños de código permiten un disparador alternativo que obliga a la página a abrirse en una nueva pestaña, otros diseños de código lo impiden. Esto es más común en sitios con contenido dinámico que no tiene "páginas" típicas y en su lugar genera las páginas cuando se hace clic en los botones. En este caso, no hay verdaderos "enlaces" en la página, sino botones que activan el comportamiento más como una aplicación.
music2myear
6

Escribí un complemento de Firefox (aburrido) llamado link-fixer para arreglar esto. Puede instalar desde addons.mozilla.org . Requiere Firefox 48.0 o posterior.

Citando a mi mismo:

El comportamiento predeterminado de ctrl + clic, shift + clic y cmd + clic al hacer clic en los enlaces es abrir el enlace en una nueva pestaña o nueva ventana. Este comportamiento a veces se rompe por desarrolladores descuidados. Este complemento restaura el comportamiento predeterminado, asegurando que siempre se respeten las claves modifer.

Una vez instalado, no hay nada más que deba hacer. Puede presionar Ctrl + clic en cualquier enlace y se abrirá en una nueva pestaña. También resolverá la variación del problema que describe en su segundo párrafo.

danielnixon
fuente
1
Hola Daniel, si bien es genial que hayas escrito algo para abordar esto, ¿puedes leer cómo recomendar el software en una respuesta , particularmente las partes en negrita y actualizar tu respuesta por favor? Gracias :)
bertieb
3

Tomemos este enlace como ejemplo:

<a href="test.php" onclick="someFunction(this); return false;">Test</a>

El hrefatributo, en este caso, es crear un pseudoenlace para facilitar la lectura (también permitirá que el enlace funcione incluso si JavaScript está deshabilitado). La razón de esto es porque el onclickatributo siempre se ejecuta primero. Los grandes sitios como Google hacen esto para rastrear los clics e intentar evitar que un usuario visite sitios de malware. Debido a esto, por alguna razón, Ctrl+ Click no funciona. Sin embargo, si usa el botón central del mouse, eso casi siempre funciona.

soy el hombre
fuente
1
Intentando encontrar un mouse medio en Mac .
Eduard
Escribí un complemento de Firefox para solucionar este problema. github.com/danielnixon/link-fixer
danielnixon