Últimamente, todos los enlaces externos en mi foro han dejado de abrirse en una nueva pestaña. He verificado dos veces la opción «abrir enlaces externos en una nueva pestaña por defecto» y está marcada:
¿Puedes probar esto aquí en Meta? Configura tus preferencias aquí para abrir los enlaces externos en una nueva pestaña y ver si funciona para ti. Funciona bastante bien para mí.
Una de las mejores opciones para empezar a solucionar el problema sería examinar el DOM directamente usando la consola de desarrollo web; y revisar cuáles son los atributos exactos de tu enlace, en particular, el atributo “target”.
A menudo, no puedes ver estos atributos del DOM leyendo directamente el código fuente (estos atributos pueden existir en el DOM pero no en el código fuente), por lo que necesitarás consultar el DOM para obtener los atributos (para estar 100% seguro).
No. Leer el código fuente no es lo mismo que verificar el DOM.
Los atributos del DOM pueden ser diferentes (y a menudo lo son) que los del código fuente; especialmente en sitios web que utilizan mucho JavaScript para manipular el DOM (como Discourse).
Por eso mencioné específicamente consultar el DOM y no simplemente mirar el código fuente
Sin embargo, estoy de acuerdo contigo @osioke en que el código fuente muestra claramente que falta el atributo target; pero cuando verificamos el DOM, estaremos “seguros” de cuál es el atributo; ya que el DOM puede estar en un estado diferente al del código fuente (y a menudo lo está).
Personalmente, soy un gran defensor de “nunca asumir nada”, por lo que sugerí que @riteshsaini “se asegurara” verificando el DOM y luego “procediera desde allí”.
Es muy posible que los atributos de destino de los enlaces en el DOM y en el código fuente estén en el mismo estado; pero siempre recomiendo a quienes solucionan problemas que no asuman este tipo de detalles; de ahí mi sugerencia de consultar el DOM como paso de solución de problemas.
<script type="text/discourse-plugin" version="0.8">
api.onPageChange((url, title) => {
// Abrir automáticamente los enlaces externos en una nueva pestaña o ventana
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>
… y lo ilustra perfectamente en un ejemplo sólido de la API de Discourse, mostrando cómo el DOM y el código fuente estarán en un estado diferente y no verás los atributos de destino en el código HTML establecidos por el JS anterior
¿Has revisado la configuración de tu perfil personal en preferences/interface? Porque generalmente esta situación se produce cuando en tu perfil personal está deshabilitada la apertura de enlaces externos en nuevas pestañas.
Estaba desmarcado, así que lo marqué. Ahora abre los enlaces en una nueva pestaña solo cuando estoy conectado. Si reviso el sitio en una pestaña de incógnito, aún no funciona.
Para foros de intercambio y descarga que utilizan enlaces de Bitly o sitios externos (menos seguros), ¿considerarías usar rel="noopener noreferrer" en lugar de rel="nofollow"?
Puedes obtener más información sobre noopener noreferrer.
Puedo considerar añadir noopener noreferrer, pero seguiré necesitando añadir nofollow junto con ellos. El caso es que no quiero que Google siga o indexe esos enlaces, ya que son enlaces de afiliados. Solo nofollow puede ayudar con eso.