Ultimamente, todos os links externos no meu fórum deixaram de abrir em uma nova aba. Verifiquei novamente a opção “abrir links externos em uma nova aba por padrão” e ela está marcada:
Você pode testar isso aqui no Meta? Configure suas preferências aqui para abrir links externos em uma nova aba e veja se funciona para você. Funciona muito bem para mim.
Uma das melhores opções iniciais para solução de problemas seria examinar o DOM diretamente usando o console de desenvolvedor web; e inspecionar quais são os atributos exatos do seu link, em particular, o atributo “target”.
Muitas vezes, você não consegue ver esses atributos do DOM lendo diretamente o código-fonte (esses atributos podem existir no DOM, mas não no código-fonte), então você precisará consultar o DOM para obter os atributos (para ter 100% de certeza).
Não. Ler o código-fonte não é o mesmo que verificar o DOM.
Os atributos do DOM podem ser diferentes (e frequentemente são) do código-fonte; especialmente em sites que usam muito JavaScript para manipular o DOM (como o Discourse).
É por isso que mencionei especificamente consultar o DOM e não apenas olhar o código-fonte
No entanto, concordo com você, @osioke, que o código-fonte mostra claramente que o atributo target está ausente; mas ao verificarmos o DOM, teremos a “certeza” de qual é o atributo; já que o DOM pode estar em um estado diferente do código-fonte (e frequentemente está).
Pessoalmente, sou um grande fã de “nunca assumir nada”, e é por isso que sugeri que @riteshsaini “tivesse certeza” verificando o DOM e depois “prosseguisse a partir daí”.
É altamente provável que os atributos de destino dos links no DOM e no código-fonte estejam no mesmo estado; mas sempre recomendo que as pessoas que estão solucionando problemas não assumam esse tipo de detalhe; daí minha sugestão de consultar o DOM como uma etapa de solução de problemas.
<script type="text/discourse-plugin" version="0.8">
api.onPageChange((url, title) => {
// Abrir automaticamente links externos em nova aba ou janela
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 ilustrando perfeitamente em um exemplo sólido da API do Discourse como o DOM e o código-fonte estarão em estados diferentes, e você não verá os atributos de destino no código HTML definidos pelo JS acima
Você verificou as configurações do seu perfil pessoal em preferences/interface? Geralmente, essa situação ocorre quando a abertura de links externos em novas abas está desabilitada no seu perfil pessoal.
Estava desmarcado, então eu marquei. Agora, os links abrem em uma nova aba apenas quando estou logado. Se eu verificar o site em uma aba anônima, ainda não funciona.
Para fóruns de compartilhamento e download usando links do Bitly ou outros sites (menos seguros),
você consideraria usar rel="noopener noreferrer" em vez de rel="nofollow"?
Você pode saber mais sobre noopener noreferrer.
Posso considerar adicionar noopener noreferrer, mas ainda precisarei adicionar nofollow junto com eles. O problema é que não quero que o Google siga ou indexe esses links, pois são links de afiliado. Apenas nofollow pode ajudar nisso.