Salut,

La présence, dans une page déclarée en mode strict (ex. : xhtml 1.0 strict) de code non strict (ex. : l'attribut target) est-elle susceptible de faire passer IE en mode Quirks ?
Modifié par Marvin Le Rouge (03 Mar 2005 - 22:06)
Non, ça ne va pas le faire passer en mode non-strict.

Mais pourquoi met-tu un attribut target ? Est-ce justifié (genre "c'est le patron qui veut") ?

N'oublie pas qu'il ne faut jamais imposer une nouvelle fenêtre à l'internaute. Il doit pouvoir lui-même choisir Smiley smile
Pourquoi utiliser l'attribut target et XHTML Strict ?

C'est plus exitant quand c'est interdit ? Smiley biggol
Non, je ne souhaite pas qu'il y ait du code non strict dans cette page (et il n'y en aurait pas si ça ne tenait qu'à moi), mais la page en question est susceptible de contenir du code (un bandeau de pub) de provenance extérieure (créé par un javascript stocké sur le serveur du fournisseur de ppub), et qui pour l'instant contient un target.
Je vais conseiller au détenteur du site de demander à son fournisseur de pub du code strict, mais je voulais être sûr que ça ne risquait pas de mettre en l'air tout le boulot en strict + css.

Merci
surtout qu'il y a une solution alternatif pour "émuler" un target="_blank" pour qu'il passe au validateur pour le XHTML 1.0 Strict.
Certes, mais si t'as besoin du [target="_blank"], tu utilises [target="_blank"] et tu changes de DTD. Le W3C édite des normes dans l'optique d'une compatibilité ascendante et descendante. Si tu as besoin de fonctionalités qui existent, il est beaucoup plus aisé d'utiliser une "vieille" norme (vieille ne veut pas dire dépréciée) pour ses fonctionnalités, plutôt que de vouloir une norme pour la norme et d'"émuler" une fonctionnalité avec des moyens douteux: Javascript et autres...

Voilà pour mon avis, bonne nuit, @+, HoPHP
Modifié par HoPHP (03 Mar 2005 - 23:56)
Donc si on s'en tient à la question de départ :
Marvin Le Rouge a écrit :

La présence, dans une page déclarée en mode strict (ex. : xhtml 1.0 strict) de code non strict (ex. : l'attribut target) est-elle susceptible de faire passer IE en mode Quirks ?

Par curiosité j'ai fait la page-test suivante :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr-CA" lang="fr-CA">
 <head>
  <title>Quirk test</title>
  <meta http-equiv="Content-Language" content="fr-CA" />
  <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
  <meta http-equiv="Content-Style-Type" content="text/css" />
  <style type="text/css">
* {padding: 0; margin: 0;}
#test {
   background-color: silver;
   width: 200px;
   border: 5px solid red;
   padding: 9px;
   margin: 9px;
}
  </style>
 </head>
 <body>
  <div id="test"><ul><li><a href="#" target="_blank">lien</a></li></ul></div>
 </body>
</html>

Après comparaison dans différents navigateurs/plates-formes, je peux donc affirmer :
non, la présence de l'attribut target en XHTML Strict ne fait pas basculer en mode « Quirk ».
@Anthony et HoPhP : Je n'insèrerai pas de code non strict dans la page, et je vais conseiller au détenteur du site de demander à son fournisseur de pub de lui fournir du code strict, mais je n'ai aucune garantie que ce sera fait. C'est pour ça que je me renseigne au préalable. Et si - non, quand ! - du code strict leur sera fourni, avec un beau rel=external, je me ferai un plaisir de faire le petit bout de code qui provoque l'équivalence avec target.

@Stephan : Merci Smiley biggrin
Marvin Le Rouge> le script existe déjà, je l'ai trouvé dans un article je ne sais plus sur quel site :

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 ;
[/i]
Mais POURQUOI ???? Utilisez la DTD XHTML 1.0 Transitional ou la DTD HTML4.01 et utilisez target="_blank", non ? Ne serait-ce pas plus simple ?

@+, HoPHP
D'un point de vue rigueur, je ne pense pas que faire en JavaScript :
 anchor.target = "_blank" ;

Soit valide Smiley decu Dans une DTD Strict, le DOM suit la DTD, non ? Si cela fonctionne tout de même, c'est avant tout à cause des agents utilisateurs trop permissif. Faudrait faire 2-3 essais Smiley smile
@Anthony : dans ce cas, je me ferai un plaisir de le repiquer (on va pas réinventer la roue non plus Smiley lol )

@HoPHP :
HoPHP a écrit :
Mais POURQUOI ???? Utilisez la DTD XHTML 1.0 Transitional ou la DTD HTML4.01 et utilisez target="_blank", non ?


Parce qu'en l'occurence, le site doit contractuellement être converti en Xhtml 1.0 strict, donc je fais du strict.
Le lien en question est de source extérieure, je n'ai donc aucun moyen de savoir s'il changera ou pas dans le futur, mais je signifierai de toute façon au propriétaire du site que ce serait souhaitable.

@FlorentG :
1) Je ne sais pas si la DOM est censé suivre la DTD
2) il est logique que le proriétaire d'un site n'est pas envie que ses internautes se retrouvent sur un autre site lorsqu'ils cliquent sur une pub
3) si la proriété existe, et que la valeur est supportée, alors c'est bon
4) si la propriété n'existe pas, il ne se passera rien