2010
Se você é fresco como eu ou como a Dani Murai e gosta de codificar suas páginas utilizando doctype strict já sabe que target=”_blank” não valida. Particularmente eu sou contra _blank. É consenso entre os gurus de UX deixar a critério do usuário abrir ou não um link em uma nova guia. Mas como muitos clientes não entendem as implicações de forçar este tipo de prática guela abaixo do usuáro, e você é fresco e continua querendo usar strict, a solução é JavaScript:
1 2 3 4 5 | $('a').click(function(){ var href = $(this).attr('href'); window.open(href); return false; }); |
Este exemplo em jQuery, se executado, fará com que todos os links desta página sejam abertos em uma nova guia. O return false na linha 4 serve para barrar o evento padrão do link. Se o return for omitido, o destino do link vai ser aberto em uma nova guia e também na página atual.
preventDefault: uma alternativa mais elegante
Descobri recentemente o método preventDefault que acaba sendo muito mais prático e menos sujo do que o return false:
1 2 3 4 5 | $('a').click(function(event){ event.preventDefault(); var href = $(this).attr('href'); window.open(href); }); |
Além de fazer muito mais sentido do que o return, preventDefault pode ser colocado em qualquer parte do evento, não interrompendo o fluxo da função.
O ideal é usar $(‘a[rel=external]‘), mas acho que doctype strict já tá meio “vintage”, a tendencia agora é HTML5
É verdade, rel=”external” fica melhor do que a solução que eu dei outro dia: class=”_blank” (nem um pouco semântica).
É, o HTML5! Coitado, o strict nem chegou a ter seu momento de glória.
Valeu!
usei bastante o event.preventDefault(); não manjava esse…ele é ideal para quando vc está usando a função click de um li por exemplo e quer desabilitar o a que está dentro dela…
E HTML5 mesmo só a Dine que ta usando…com os clientes com ie6 não da nem pra aprender essa porra…hehehe