Pourquoi CTRL-click n'ouvre-t-il pas certains liens dans un nouvel onglet?

18

Parfois, pendant la navigation, je clique sur un lien pour l'ouvrir dans un nouvel onglet. Cependant, au lieu d'ouvrir dans un nouvel onglet, il est cliqué et parcouru dans l'onglet actuel comme si je l'avais cliqué normalement sans maintenir ctrl. Je suis certain que je maintiens la touche Ctrl enfoncée et qu'il n'y a aucun défaut avec le clavier ou la souris.

Parfois, un nouvel onglet sera ouvert avec le lien, mais l'onglet actuel parcourra également le lien simultanément.

Coldblackice
la source
3
Ce ne sont peut-être pas des liens réels, en ce sens que le "lien" utilise peut-être une onclickopération qui pourrait perturber le ctrl + clic. Pouvez-vous donner un exemple précis? meta.stackoverflow.com/questions/276138/…
imtheman
@imtheman Bon point, cependant, cela ne semble pas être le cas, du moins dans les exemples que j'ai vus. Je le sais car je passe toujours ma souris sur le lien au préalable pour vérifier qu'il affiche une URL dans la barre d'état. Un exemple est ici: nationaljournal.com/white-house/… Dans la colonne / barre de gauche, les liens vers d'autres histoires semblent être leurs propres URL, vérifiés en sautant même à leur emplacement dans la source, cependant, ctrl-clic ne fait pas ne fonctionne pas, agissant plutôt comme si ctrl n'était pas maintenu.
Coldblackice
Si vous regardez le code source de ce site, vous le verrez pour l'un des liens:<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
Bien qu'il ait un hrefattribut, il est remplacé par l'événement onclick.
imtheman
1
J'ai écrit un addon Firefox pour résoudre ce problème. github.com/danielnixon/link-fixer
danielnixon

Réponses:

8

JavaScript dans les coulisses

Cela se produit lorsque les développeurs de ces pages Web interceptent les clics de souris avec JavaScript et effectuent des requêtes réseau asynchrones à l'intérieur de l'intercepteur, potentiellement pour suivre vos clics. Lorsque l'appel réseau asynchrone revient, le JS effectue une redirection programmatique en utilisant quelque chose comme:window.location.href = url;

Cette redirection programmatique chargera toujours la page dans le même onglet, même si vous maintenez Ctrl( Cmdsur Mac).

Utilisez MiddleMouse pour remplacer

En cliquant sur le bouton central de votre souris ou en sélectionnant «Ouvrir dans un nouvel onglet» dans le menu contextuel, le code JavaScript d'interception sera entièrement ignoré et un lien sera ouvert comme s'il n'y avait aucun code JavaScript.

Valentin Vasilyev
la source
Ce n'est pas tout à fait correct. Alors que certaines conceptions de code permettent un déclencheur alternatif qui force la page à s'ouvrir dans un nouvel onglet, d'autres conceptions de code empêchent cela. Ceci est plus courant dans les sites avec un contenu dynamique qui n'a pas de "pages" typiques et génère à la place les pages lorsque l'on clique sur les boutons. Dans ce cas, il n'y a pas de vrais "liens" dans la page, mais plutôt des boutons qui déclenchent un comportement plus semblable à une application.
music2myear
6

J'ai écrit un add-on Firefox (ennuyeux) nommé link-fixer pour résoudre ce problème. Vous pouvez installer depuis addons.mozilla.org . Il nécessite Firefox 48.0 ou une version ultérieure.

Je me cite:

Le comportement par défaut de ctrl + clic, Maj + clic et cmd + clic lorsque vous cliquez sur des liens consiste à ouvrir le lien dans un nouvel onglet ou une nouvelle fenêtre. Ce comportement est parfois brisé par des développeurs imprudents. Ce module complémentaire restaure le comportement par défaut, garantissant que les clés du modificateur sont toujours respectées.

Une fois installé, vous n'avez rien d'autre à faire. Vous pouvez ctrl + cliquer sur n'importe quel lien et il s'ouvrira dans un nouvel onglet. Cela résoudra également la variation du problème que vous décrivez dans votre deuxième paragraphe.

danielnixon
la source
1
Salut Daniel, même si c'est génial que vous ayez écrit quelque chose pour résoudre ce problème, pouvez-vous lire comment recommander un logiciel dans une réponse , en particulier les parties en gras et mettre à jour votre réponse s'il vous plaît? Merci :)
bertieb
3

Prenons ce lien comme exemple:

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

L' hrefattribut, dans ce cas, crée un pseudo lien pour la lisibilité (il permettra également au lien de fonctionner même si JavaScript est désactivé). La raison en est que l' onclickattribut s'exécute toujours en premier. Les grands sites comme Google le font pour suivre les clics et pour empêcher un utilisateur de visiter les sites de logiciels malveillants. Pour cette raison, pour une raison quelconque, Ctrl+ Click ne fonctionne pas. Cependant, si vous utilisez le bouton central de votre souris, cela fonctionne presque toujours.

je suis l'homme
la source
1
Essayer de trouver une souris centrale sur Mac .
Eduard
J'ai écrit un addon Firefox pour résoudre ce problème. github.com/danielnixon/link-fixer
danielnixon