Pergunta sobre internet-explorer-8 – target = _blank não funciona no IE8, executando IEs lado-a-lado (eu executo o pacote de IEs via VirtualBox)

1

Às vezes, o IE8 impedirá que os links sejam gerados se tiverem o conjunto target = _blank.

Esse problema parece estar limitado a instalações danificadas do IE, como ao instalar várias versões lado a lado.

Eu editei esta questão uma vez que encontrei a resposta, e espero que isso vá salvar alguém mais algum tempo. A resposta está nos comentários da primeira resposta listada.

O que é uma enorme coleção de respostas erradas ... Mais, preocupantemente, as crianças do XHTML 1.1 acham que colocar o mouse em _target = blank através do javascript é um hack válido. Se um navegador implementou o XHTML 1.1só você esperaria que isso não funcionasse. Evan Carroll
Pode ser útil reformular a pergunta para indicar que isso é um problema ao tentar executar o IE lado a lado. EricLaw
Boa ideia, eu mudei. Andrew Johnson

Sua resposta

5   a resposta
-1

Se você não quiser continuar usando window.open em todos os lugares, você pode usar rel = "external" e algum Javascript extra como o seguinte, usando JQuery:

$(document).ready(function() {
    $("a[rel='external']").attr("target","_blank");
});

EDIT: Para definir todos os links gerados:

 $("a[rel='external']").ready(function() { 
    $("a[rel='external']").attr("target","_blank");
 });

Ou, sem jQuery, você pode usar o script,encontrado aqui:

function externalLinks() { 
 if (!document.getElementsByTagName) return; 
 var anchors = document.getElementsByTagName("a"); 
 for (var i=0; i<anchors.length; i++) { 
   var anchor = anchors[i]; 
   if (anchor.getAttribute("href") && 
       anchor.getAttribute("rel") == "external") 
     anchor.target = "_blank"; 
 } 
} 
window.onload = externalLinks;
Isso não funciona. Primeiro de tudo, os links são criados com javascript e, como tal, não existem onload. Eu tentei definir a.rel e a.target, mas isso não funciona. Andrew Johnson
Sua colaboração consiste em "isso não funciona". Você não deve desanimar porque a solução "não funciona". Funciona, não exatamente da maneira que você quer. João Marcus
Bem, isso deveria ser um site de colaboração, não um site "dê-me uma solução que funcione fora da caixa". João Marcus
Daí minha colaboração continuada. Andrew Johnson
-2

_ blank" não é válido no XHTML Strict Mode. Vejo:

http://www.8164.org/xhtml-strict/

O seguinte deve funcionar em todos os casos.

<script>window.open("http://www.80vul.com/test/ie8-1.htm");</script>

Eu presumo que a partir do IE8 Beta 1, o modo padrão agora é STRICT ao invés de TRANSITIONAL.

Sim, infelizmente essa é uma das razões pelas quais não recomendamos os hacks "lado-a-lado". O VPC é a única maneira suportada de se colocar lado a lado hoje. Obrigado pela atualização! EricLaw
debugtheweb.com/test/strict.htm funciona corretamente quando o IE8 está instalado corretamente. EricLaw
Isso não funciona para mim, embora no meu documento eu esteja forçando o modo IE7 da seguinte maneira: <meta http-equiv = "X-UA-Compatível" content = "IE = EmulateIE7" /> Andrew Johnson
Eric, você acertou na unha na cabeça. Eu tenho "side-by-side" IEs (6,7,8, etc.) instalado em uma instância do VirtualBox. Quando eu verifico a página através de uma caixa real do windows, funciona. Obrigado! Andrew Johnson
3

ao usar o "Site Final Builds - Internet Explorer Collection" (http://finalbuilds.edskes.net/iecollection.htm) versão 1.6.0.3. O desenvolvedor já corrigiu esse bug desde Ver. 1.6.0.4 e links com target = "_ blank" agora funcionam como esperado.

-1

target='blank' ? Eu sei que não é o mesmo, mas você terá o pop-up / janela aberta em uma nova instância, e seu site pode validar para XHTML Strict Mode :)

desculpe, eu perdi uma cotação. Deve ter sido alvo = 'em branco' Andrea
Isso não funciona para mim. Andrew Johnson
para o registro, não é o '_blank' que não é permitido em XHTML 1.0 ou 1.1 strict, é o atributo de destino na âncora ou elementos de link. Foi (intencionalmente) deixado de fora do DTD. Se usando target = 'blank' validado para você como XHTML 1.0 ou 1.1 Strict, então foi um erro na parte do validador. Dito isto, a maioria dos navegadores ainda aceitam e processam, válido ou não. Gabriel Hurley
Ainda não funciona :( Andrew Johnson
0

mas eu só queria contar sobre a funcionalidade de ligação ao vivo do jQuery:

$("a.myclass").live("click",function() {
    $(this).attr("target","_blank");
});

Este exemplo define o atributo 'target = "_ blank"' para qualquer link com a classe "myclass", mesmo aqueles criados com Javascript.

Perguntas relacionadas