Perché CTRL-click non apre alcuni link in una nuova scheda?


16

A volte durante la navigazione, farò ctrl-clic su un link per aprirlo in una nuova scheda. Tuttavia, anziché aprirsi in una nuova scheda, viene cliccato e sfogliato nella scheda corrente come se avessi cliccato normalmente senza tenere premuto ctrl. Sono sicuro che tengo premuto ctrl completamente e che non ci sono problemi con la tastiera o il mouse.

Occasionalmente, una nuova scheda verrà aperta con il collegamento, ma la scheda corrente esplorerà anche il collegamento contemporaneamente.


3
Forse non sono collegamenti reali, nel senso che forse il "link" sta usando un onclick operazione che potrebbe compromettere il ctrl + clic. Puoi dare un esempio specifico? meta.stackoverflow.com/questions/276138/...
imtheman

@imtheman Un grande punto, tuttavia, non sembra essere il caso, almeno negli esempi che ho visto. Lo so perché sposto sempre il mouse sul link per verificare che mostri un URL nella barra di stato. Un esempio è qui: nationaljournal.com/white-house/... Nella colonna / barra di sinistra, i link ad altre storie sembrano essere i loro URL, verificati saltando anche nella loro posizione nella sorgente, tuttavia, fare clic tenendo premuto ctrl non funziona, ma agire come se Ctrl non fosse tenuto .
Coldblackice

Se guardi il codice sorgente di quel sito, lo vedrai per uno dei link: <a class="primary" href="/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
Mentre ha un href attributo, viene sovrascritto dall'evento onclick.
imtheman

Aha! Grazie. Quindi immagino che questo significhi che la visualizzazione della barra di stato del browser dell'URL al passaggio del mouse mostri il link "post-Javascript", ma ctrl-clic sul link si esegue essenzialmente come "pre-Javascript" (per così dire) - lo fa suono giusto?
Coldblackice

Risposte:


7

JavaScript dietro le quinte

Ciò accade quando gli sviluppatori di tali pagine Web intercettano i clic del mouse con JavaScript e fanno richieste di rete asincrona all'interno dell'intercettore, potenzialmente per tracciare i clic. Quando viene restituita la chiamata di rete asincrona, il JS esegue un reindirizzamento programmatico utilizzando qualcosa come: window.location.href = url;

Questo reindirizzamento programmatico caricherà sempre la pagina nella stessa scheda, anche se si tiene premuto Ctrl ( cmd su Mac).

Usa MiddleMouse per sovrascrivere

Facendo clic sul pulsante centrale del mouse o selezionando 'apri in una nuova scheda' dal menu di scelta rapida si evita completamente il codice di intercettazione di JavaScript e si aprirà un collegamento come se non esistesse alcun codice JavaScript.


Questo non è completamente corretto. Mentre alcuni disegni di codice consentono un trigger alternativo che forza l'apertura della pagina in una nuova scheda, altri design di codice lo impediscono. Questo è più comune nei siti con contenuti dinamici che non hanno "pagine" tipiche e invece genera le pagine quando si fa clic sui pulsanti. In questo caso, non ci sono veri "link" nella pagina, ma piuttosto pulsanti che attivano il comportamento più come un'applicazione.
music2myear

3

Prendiamo questo link come esempio:

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

Il href l'attributo, in questo caso, sta creando uno pseudo link per la leggibilità (consentirà inoltre al link di funzionare anche se JavaScript è disabilitato). La ragione di questo è perché il onclick l'attributo viene sempre eseguito per primo. Grandi siti come Google fanno questo per tenere traccia dei clic e per cercare di impedire a un utente di visitare siti di malware. Per questo motivo, per qualche motivo Ctrl + Click non funziona. Tuttavia, se si utilizza il pulsante centrale del mouse, quasi sempre funziona.


Cercando di trovare un middle-mouse su Mac .
Eduard

Ho scritto un addon per Firefox per risolvere questo problema. github.com/danielnixon/link-fixer
danielnixon

2

Ho scritto un add-on di Firefox (noiosamente) chiamato link-fixer per risolvere questo. Puoi installa da addons.mozilla.org . Richiede Firefox 48.0 o versioni successive.

Citando me stesso:

Il comportamento predefinito di ctrl + clic, maiusc + clic e cmd + clic quando si fa clic sui collegamenti è di aprire il collegamento in una nuova scheda o in una nuova finestra. Questo comportamento è a volte rotto da sviluppatori incuranti. Questo componente aggiuntivo ripristina il comportamento predefinito, garantendo che le chiavi modifer siano sempre rispettate.

Una volta installato non c'è nient'altro che devi fare. Puoi ctrl + clic su qualsiasi link e si aprirà in una nuova scheda. Risolverà anche la variazione del problema che descrivi nel tuo secondo paragrafo.


Ciao Daniel, mentre è bello che tu abbia scritto qualcosa per affrontare questo, puoi leggere come raccomandare il software in una risposta , in particolare le parti in grassetto e aggiorna la tua risposta per favore? Grazie :)
bertieb
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.