Por que CTRL-click não abre alguns links em uma nova guia?

18

Às vezes, enquanto navega, clico com o botão direito do mouse em um link para abri-lo em uma nova guia. No entanto, em vez de abrir em uma nova guia, ele é clicado e navegado na guia atual como se eu tivesse clicado normalmente sem pressionar a tecla Ctrl. Estou certo de que estou mantendo a tecla Ctrl pressionada completamente e que não há falhas no teclado ou no mouse.

Ocasionalmente, uma nova guia será aberta com o link, mas a guia atual também procurará o link simultaneamente.

Coldblackice
fonte
3
Talvez eles não sejam links reais, no sentido de que talvez o "link" esteja usando uma onclickoperação que poderia mexer com o ctrl + clique. Você pode dar um exemplo específico? meta.stackoverflow.com/questions/276138/…
imtheman
@ imtheman Grande ponto, no entanto, não parece ser o caso, pelo menos nos exemplos que eu já vi. Eu sei disso porque sempre passo o mouse sobre o link antes para verificar se ele está mostrando um URL na barra de status. Um exemplo é o seguinte: nationaljournal.com/white-house/… Na coluna / barra à esquerda, os links para outras histórias parecem ser seus próprios URLS, verificados saltando para o local na fonte; no entanto, clicar com a tecla Ctrl pressionada funciona, em vez disso, agindo como se o ctrl não estivesse sendo mantido.
Coldblackice
Se você olhar o código-fonte desse site, verá um dos seguintes links:<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
11
Embora tenha um hrefatributo, ele é substituído pelo evento onclick.
imtheman
11
Eu escrevi um complemento do Firefox para corrigir esse problema. github.com/danielnixon/link-fixer
danielnixon

Respostas:

8

JavaScript nos bastidores

Isso acontece quando os desenvolvedores dessas páginas da Web interceptam cliques do mouse com JavaScript e fazem solicitações de rede assíncronas dentro do interceptador, potencialmente para rastrear seus cliques. Quando a chamada de rede assíncrona retorna, o JS faz um redirecionamento programático usando algo como:window.location.href = url;

Esse redirecionamento programático sempre carrega a página na mesma guia, mesmo se você segurar Ctrl( Cmdno Mac).

Use o MiddleMouse para substituir

Clicar no botão do meio do mouse ou selecionar 'abrir em uma nova guia' no menu de contexto ignorará completamente o código JavaScript interceptador e abrirá um link como se não houvesse código JavaScript.

Valentin Vasilyev
fonte
Isso não está totalmente correto. Enquanto alguns designs de código permitem um acionador alternativo que força a página a abrir em uma nova guia, outros designs de código evitam isso. Isso é mais comum em sites com conteúdo dinâmico que não possui "páginas" típicas e, em vez disso, gera as páginas à medida que os botões são clicados. Nesse caso, não existem "links" verdadeiros na página, mas botões que acionam o comportamento mais como um aplicativo.
music2myear
6

Eu escrevi um complemento do Firefox (chato) chamado link-fixer para corrigir isso. Você pode instalar a partir de addons.mozilla.org . Requer o Firefox 48.0 ou posterior.

Citando a mim mesmo:

O comportamento padrão de ctrl + clique, shift + clique e cmd + clique ao clicar em links é abrir o link em uma nova guia ou nova janela. Às vezes, esse comportamento é quebrado por desenvolvedores descuidados. Esse complemento restaura o comportamento padrão, garantindo que as chaves modificadoras sejam sempre respeitadas.

Uma vez instalado, não há mais nada que você precise fazer. Você pode pressionar a tecla Ctrl e clicar em qualquer link e ele será aberto em uma nova guia. Também resolverá a variação do problema que você descreve no seu segundo parágrafo.

danielnixon
fonte
11
Olá Daniel, embora seja ótimo que você tenha escrito algo para resolver isso, pode ler como recomendar software em uma resposta , principalmente as partes em negrito e atualizar sua resposta, por favor? Obrigado :)
bertieb
3

Vamos usar este link como exemplo:

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

O hrefatributo, nesse caso, está criando um pseudo-link para facilitar a leitura (também permitirá que o link funcione mesmo se o JavaScript estiver desativado). A razão para isso é porque o onclickatributo sempre é executado primeiro. Sites grandes como o Google fazem isso para rastrear cliques e tentar impedir que um usuário visite sites de malware. Por esse motivo, por algum motivo, o Ctrl+ Clique não funciona. No entanto, se você usar o botão do meio do mouse, isso quase sempre funcionará.

eu sou o homem
fonte
11
Tentando encontrar um mouse do meio no Mac .
Eduard
Eu escrevi um complemento do Firefox para corrigir esse problema. github.com/danielnixon/link-fixer
danielnixon