Récemment, tous les liens externes sur mon forum ont cessé de s’ouvrir dans un nouvel onglet. J’ai vérifié à nouveau l’option « ouvrir les liens externes dans un nouvel onglet par défaut » et elle est bien cochée :
Pouvez-vous tester cela ici sur Meta ? Définissez vos préférences ici pour ouvrir les liens externes dans un nouvel onglet et voyez si cela fonctionne pour vous. Cela fonctionne très bien pour moi.
L’une de vos premières étapes de dépannage les plus efficaces serait d’examiner directement le DOM en utilisant la console de développement web ; et d’inspecter les attributs exacts de votre lien, en particulier l’attribut “target”.
Souvent, vous ne pouvez pas voir ces attributs du DOM en lisant directement le code source (ces attributs peuvent exister dans le DOM mais pas dans le code source), vous devrez donc interroger le DOM pour obtenir les attributs (pour en être certain à 100 %).
Non. Lire le code source n’est pas la même chose que d’examiner le DOM.
Les attributs du DOM peuvent être différents (et le sont souvent) de ceux du code source ; en particulier sur les sites web qui utilisent beaucoup de JavaScript pour manipuler le DOM (comme Discourse).
C’est pourquoi j’ai spécifiquement mentionné d’interroger le DOM et non pas simplement de regarder le code source
Cependant, je suis d’accord avec toi @osioke : le code source montre clairement que l’attribut target est manquant ; mais lorsque nous examinons le DOM, nous serons « certains » de la valeur de l’attribut, car le DOM peut se trouver dans un état différent de celui du code source (et l’est souvent).
Personnellement, je suis un grand partisan de « ne jamais rien supposer », c’est pourquoi j’ai suggéré à @riteshsaini de « s’assurer » en vérifiant le DOM, puis de « continuer à partir de là ».
Il est tout à fait possible que les attributs target des liens dans le DOM et dans le code source soient dans le même état ; mais je recommande toujours aux personnes qui dépannent des problèmes de ne pas supposer ce genre de détails ; d’où ma suggestion d’interroger le DOM comme étape de dépannage.
<script type="text/discourse-plugin" version="0.8">
api.onPageChange((url, title) => {
// Ouvrir automatiquement les liens externes dans un nouvel onglet ou une nouvelle fenêtre
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>
… et en illustrant parfaitement, grâce à un exemple solide de l’API Discourse, comment le DOM et le code source peuvent se trouver dans des états différents, ce qui fait que vous ne verrez pas les attributs cibles définis par le JavaScript ci-dessus dans le code HTML source
Avez-vous vérifié les paramètres de votre profil personnel sous preferences/interface ? Car généralement, cette situation se produit lorsque l’ouverture des liens externes dans un nouvel onglet est désactivée dans votre profil personnel.
La case n’était pas cochée, alors je l’ai cochée. Maintenant, les liens s’ouvrent dans un nouvel onglet uniquement lorsque je suis connecté. Si je vérifie le site dans un onglet de navigation privée, cela ne fonctionne toujours pas.
Pour les forums dédiés au partage et au téléchargement via des liens Bitly ou d’autres sites (moins sécurisés), seriez-vous prêt à utiliser rel="noopener noreferrer" à la place de rel="nofollow" ?
Vous pouvez en savoir plus sur noopener noreferrer.
Je peux envisager d’ajouter noopener noreferrer, mais je devrai tout de même inclure nofollow en même temps. En effet, je ne souhaite pas que Google suive ou indexe ces liens, car il s’agit de liens d’affiliation. Seul nofollow permet de faire cela.