Ultimamente, tutti i collegamenti esterni sul mio forum hanno smesso di aprirsi in una nuova scheda. Ho ricontrollato l’opzione “apri i collegamenti esterni in una nuova scheda per impostazione predefinita” ed è selezionata:
Puoi provarlo qui su Meta? Imposta le tue preferenze qui per aprire i link esterni in una nuova scheda e verifica se funziona per te. Per me funziona molto bene.
Una delle prime e migliori opzioni per la risoluzione dei problemi sarebbe esaminare direttamente il DOM utilizzando la console per sviluppatori web; ispezionare quali sono gli attributi esatti del tuo link, in particolare l’attributo “target”.
Spesso non è possibile vedere questi attributi del DOM leggendo direttamente il codice sorgente (questi attributi possono esistere nel DOM ma non nel codice sorgente), quindi dovrai interrogare il DOM per ottenere gli attributi (per essere sicuro al 100%).
No. Leggere il codice sorgente non è la stessa cosa che verificare il DOM.
Gli attributi del DOM possono essere diversi (e spesso lo sono) rispetto al codice sorgente; specialmente sui siti web che utilizzano molto JavaScript per manipolare il DOM (come Discourse).
Per questo ho specificato di interrogare il DOM e non limitarsi a guardare il codice sorgente
Tuttavia, sono d’accordo con te @osioke: il codice sorgente mostra chiaramente l’attributo target mancante; ma quando verifichiamo il DOM, saremo “certi” di quale sia l’attributo, poiché il DOM può trovarsi in uno stato diverso rispetto al codice sorgente (e spesso lo è).
Personalmente, sono un grande sostenitore del “non assumere mai nulla”, ed è per questo che ho suggerito a @riteshsaini di “assicurarsi” verificando il DOM e poi “procedere di conseguenza”.
È molto probabile che gli attributi target dei link nel DOM e nel codice sorgente siano nello stesso stato; ma raccomando sempre a chi risolve problemi di non dare per scontati dettagli di questo tipo; da qui il mio suggerimento di interrogare il DOM come passo di risoluzione dei problemi.
<script type="text/discourse-plugin" version="0.8">
api.onPageChange((url, title) => {
// Apri automaticamente i collegamenti esterni in una nuova scheda o finestra
var pc = 1;
if ($("html").hasClass("mobile-device")) pc = 0;
var links = document.links;
for (var i = 0, linksLength = links.length; i < linksLength; i++) {
if (links[i].hostname != window.location.hostname) {
if (pc) links[i].target = '_blank'; else links[i].target = '_self';
}
}
});
</script>
… e illustrando perfettamente in un solido esempio di API Discourse come il DOM e il codice sorgente si troveranno in uno stato diverso, e non vedrai gli attributi di destinazione nel codice HTML impostati dal JS sopra
Hai controllato le impostazioni nel tuo profilo personale sotto preferences/interface? Perché di solito questa situazione si verifica quando nel tuo profilo personale l’apertura dei link esterni in nuove schede è disabilitata.
Era deselezionato, quindi l’ho selezionato. Ora i collegamenti si aprono in una nuova scheda solo quando sono connesso. Se controllo il sito in una scheda in incognito, non funziona ancora.
Per i forum dedicati alla condivisione e al download tramite link esterni come Bitly o altri siti (meno sicuri),
valuteresti di utilizzare rel="noopener noreferrer" invece di rel="nofollow"?
Puoi saperne di più su noopener noreferrer
Potrei considerare di aggiungere noopener noreferrer, ma dovrò comunque includere anche nofollow. Il punto è che non voglio che Google segua o indicizzi quei link, poiché si tratta di link di affiliazione. Solo nofollow può aiutare in questo.