
Quando clico em um target=_blank
link [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:
- Use outro e melhor navegador
- Corrija todas as páginas da Internet, substituindo
target=_blank
portarget="_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="");}