Olá! Sexta Feira, 10 de Fevereiro de 2012.



Dicas CódigoFonte.net
Terça Feira, 14 de Setembro de 2004

Atributo target da TAG de link e o XHTML

O XHTML aparentemente proíbe a utilização de alguns atributos comumente utilizados no HTML convencional. Por exemplo, caso se valide um documento XHTML via o DTD do XHTML-Strict que contenha um link com o atributo target="_Blank", este não será aprovado. O XHTML-Transitional é mais relaxado e não acusará o erro.

Mas suponha que você queira utilizar o XHTML-Strict, abrir uma nova página pelo link e ainda assim passar na validação, como proceder?

Opção 1 - Javascript

<a href="http://www.mista.com.br" onclick="window.open(this.href); return false;" >Mista</a>


O que acontece aqui é que quando o usuário clicka no link, o js
window.open(this.href);
faria o browser navegar para a url especificada, porém o
return false;
evita que o browser navegue e o força a abrir o link em uma nova página. Caso o usuário tenha desabilitado o browser para Javascript ou este não suporte o js, este método vem a falhar.

Opção 2 - Javascript DOM

Poderíamos pensar de outra maneira, ié. mudar o DOM - Document Object Model. Normalmente o browser interpreta que ao clickarmos em um link normal [sem o target="_blank"] a navegação continua na mesma instância do browser. Poderíamos mudar este comportamento via Javascript da seguinte maneira:

<script language="Javascript"> 
    function SetTarget() 
    { 
    document.links[0].target = "_blank"; 
    } 
</script> 

<body onLoad="SetTarget();"> 
    <a href="http://www.mista.com.br" >Link</a> 
</body>


Deste modo abriríamos o link em uma nova página sem utilizar o atributo target="_blank", mas novamente caso o usuário tenha desabilitado o browser para Javascript ou este não suporte o js, este método vem a falhar.

Opção 3 - Modularidade do XHTML

Até então o XHTML tinha todas as definições estabelecidas em um único e enorme DTD. O XHTML 1.1 pega o XHTML 1.0 Strict e o divide em diversos módulos abstratos e deste modo os módulos são utilizados de acordo com a necessidade. Naturalmente veremos como utilizar o módulo Target.

Basicamente utilizamos o mesmo DTD acrescido do módulo Target:

<?xml version="1.0" encoding="iso-8859-1"?> 
<!-- XHTML 1.1-Target --> 

<!-- ENTITIES XHTML - data types module for basic data types --> 
<!ENTITY % xhtml-datatypes.module "INCLUDE"> 
<![%xhtml-datatypes.module;[ 
    <!ENTITY % xhtml-datatypes.mod 
     PUBLIC "-//W3C//ENTITIES XHTML Datatypes 1.0//EN" 
     "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-datatypes-1.mod"> 
%xhtml-datatypes.mod;]]> 

<!-- ENTITIES Qualified Name - namespace declarations and parameter entities --> 
<!ENTITY % xhtml-qname.module "INCLUDE"> 
<![%xhtml-qname.module;[ 
    <!ENTITY % xhtml-qname.mod 
     PUBLIC "-//W3C//ENTITIES XHTML Qualified Names 1.0//EN" 
     "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-qname-1.mod"> 
%xhtml-qname.mod;]]> 

<!-- XHTML 1.1 - driver DTD --> 
<!ENTITY % xhtml11.dtd 
PUBLIC "-//W3C//DTD XHTML 1.1//EN" 
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 
%xhtml11.dtd; 

<!-- Target Module --> 
<!ENTITY % xhtml-target.module "INCLUDE"> 
<![%xhtml-target.module;[ 
    <!ENTITY % xhtml-target.mod 
     PUBLIC "-//W3C//ELEMENTS XHTML Target Module//EN" 
     "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-target-1.mod"> 
%xhtml-target.mod;]]>


Salve o DTD acima como:
xhtml11-target.dtd
em algum diretório de seu website e crie seu documento XHTML da seguinte maneira:

<!doctype html PUBLIC "-//SeuSite//DTD XHTML 1.1-Target//EN" "http://SeuSite.com.br/Folder/xhtml11-target.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pt" lang="pt">     
    ... 
</html>


Agora você poderá utilizar o atributo Target e ainda assim <a href='http://validator.w3.org' target=_blank>validar</a> o seu documento.


<font size=1 face=verdana>
Ken Awamura<br>
Mista Informática Ltda<br>
http://www.mista.com.br<br>
</font>

Comentários do artigo [Novo comentário]

Gabriel Barros - 01 de Outubro de 2009 - 13:48
Bem interessante p/ quem quer validar o código e abrir links em novas janelas. Dessa forma, o usuário não sai do seu site e você ainda sai ganhando com o código limpo XHTML Strict.
Para adicionar um comentário você deve efetuar o login


Gostou do CódigoFonte.net? Quer indicar a um amigo?
Preencha os campos a seguir.
Seu Nome:
Seu E-mail:
E-mail de seu Amigo:






CodigoFonte.net » CodigoFonte.eti.br » Compre De Tudo » Meu Mural » Competiva - Criação de Sites » Todos os Direitos Reservados © 2002/2010

Procurando Notebooks, Câmeras Digitais, iPhones?

CompreDeTudo.com