Links não funcionam

Links não funcionam

Quando clico em um target=_blanklink [1], o IE11 abre uma nova guia em branco, em vez da guia esperada. Isso funciona bem no Chrome[2], mas falha no IE8 e agora no IE 11.

Redefini as configurações do meu navegador (configurações da Internet/guia Avançado) e atualizei para o IE 11 na tentativa de resolver isso.

Alterar as configurações da guia parece afetar isso, mas nenhuma opção obtém o comportamento esperado.

[1] código de exemplo:

<A class=oLinkExternal href="http://orgintranet.org.co.uk/systems/ibd-db/" target=_blank>IBD database</A>

[2] Versão 42.0.2311.135

Responder1

Como target="_blank"funciona, mas não target=_blank, isso parece um bug no IE11, não analisando corretamente um atributo que começa com um sublinhado.

As soluções alternativas para esse bug que consigo pensar são:

  1. Use outro e melhor navegador
  2. Corrija todas as páginas da Internet, substituindo target=_blankportarget="_blank"

Para a primeira opção você não precisa da minha ajuda.

A segunda opção não é tão impossível quanto parece. Descreverei abaixo uma abordagem, mas você deve levar em consideração que não uso o IE11 e nunca tentei isso.

Um software que modifica páginas HTML carregadas éMacaco Grease. Existem algumas adaptações dele (de qualidade desconhecida) para o IE11:

Supondo que um deles funcione, aqui está um script de usuário que pode funcionar:

// ==UserScript==
// @name        your-choice
// @namespace       http://avoid.collusions.com
// @description     Resets target="_blank" links hoping to add quotes.
// @include     *
// ==/UserScript==
(function () {
    var external = document.links; 
    for (var k=0; k<external.length; k++)   
        if (external[k].href && external[k].target=="_blank") 
            external[k].target = "_blank";
})();

Isso pressupõe, talvez erroneamente, que Greasemonkey adicionará aspas em torno dos atributos que ele substitui. Se isso não acontecer, o script pode ser modificado para forçar as aspas.

Como não testei nada, peço desculpas antecipadamente se essa abordagem não funcionar.

Responder2

Você pode remover o atributo target='_blank' usando jQuery

algo como

$document.ready(function(){
 $("a").attr('target','_blank');
});

ou apenas js

var as = [].slice.apply(document.getElementsByClassName('oLinkExternal'));
for (var a in as){as[a].target="");}

informação relacionada