Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

UTILISER TARGET="_BLANK" SUR UNE PAGE VALID XHTML STRICT


Information sur la source



Description

Permet comme spécifié dans le titre, d'utiliser des liens avec l'option target="_blank" malgré une validation xhtml strict.
Bien sur, cette methode renvoit à un long débat, je ne vais pas m'etendre sur la fait qu'un doctype transitional accepte ces methodes, et bla bla...
je pense que c'est utile pour les liens vers des sites externes, avis aux autres cheaters :-)
Bien sur, ceci n'est qu'une adaptation que j'estime plus propre, d'une idée qui court déja beaucoup sur le net, je ne m'en attribue aucunement les merites... ni les critiques de la mehode elle meme :D :D

 

Source

  • function setlinks(linkclass)
  • {
  • links = document.getElementsByTagName('a');
  • for(i in links)
  • {
  • if (links[i].className==linkclass) // verifie que le lien est de la classe specifié, supprimez ce test et l'argument de la fonction si vous voulez appliquer l'evenement à touts les liens de la page
  • {
  • links[i].onclick=function linkblank(event)
  • {
  • window.open(this.href,'_blank');
  • return false;
  • }
  • };
  • }
  • }
  • //puis appelez la function au load de la page, qui attend comme argument le nom de la class sur laquelle appliquer l'evenement.
function setlinks(linkclass)
{
	links = document.getElementsByTagName('a');
	for(i in links)
	{
		if (links[i].className==linkclass) // verifie que le lien est de la classe specifié, supprimez ce test et l'argument de la fonction si vous voulez appliquer l'evenement à touts les liens de la page
		{
			links[i].onclick=function linkblank(event) 
			{
				window.open(this.href,'_blank');
				return false;
			}
		};
	}
}
//puis appelez la function au load de la page, qui attend comme argument le nom de la class sur laquelle appliquer l'evenement. 

Commentaires et avis

signaler à un administrateur
Commentaire de jesusonline le 22/01/2007 20:21:34 administrateur CS

Euh ??? C'est quoi l'utilité ? As ton avis s'ils ont supprimé l'attribut target tu ne penses qu'il y a une raison ?

Je laisse la source car le code est "interessant" bien que complétement inutile ! Tu peux cependant utiliser links[i].className.contains(linkClass) ce qui permettra par exemple de mettre deux classes CSS sur le meme lien. (le mieux serait de faire un split(' ') sur className afin d'etre sur que l'élément contient bien la classe CSS ou alors il faut utiliser une expression réguliere)

signaler à un administrateur
Commentaire de hvb le 24/01/2007 09:23:51

salut :) l'utilité peut en effet être critiqué, voir qualifié d'inexistante. Moi je dirais même que c'est pueril, lol...
Pour repondre à "pourquoi il s l'ont enlever", je pense (je sais pas en fait) que c'est pour une question de compatibilité avec des navigateurs "restreints" , mais le code devrait néanmoins marcher si ceux ci gèrent pas le target=_blank (moyennant peut etre un try catch,
et là on tombe dans le cheat pur et dur... )
Mais je me defend quand même, meme si j'avais dit que je ne m'etendrais pas, tu m'y oblige ^^ : J'ai refait entierement ma petite homepage, que j'ai montré à un collegue, en pronant un valid html 4.01 transitional amplement suffisant à mes besoins.
Mais en montrant ça à un collegue, celui ci s'est "payé ma tête" (façon hacker, "mouhahaha minable") en me sortant que LA NORME c'est xhtml strict. J'ai été le premier à argumenter contre cette idée, mais j'ai fini par m'avouer qu'il m'avait vexé, j'ai donc revu tout mon code (et mon css, bizarrement... c'était necessaire) pour le valider xhtml strict.
Et comme une seule page (celle des liens externes) posait encore problème avec cette fonctionalité, je me suis permis de la contourner.
Après reste la question, suis-je vraiment obliger de choisir pour l'utilisateur la façon dont il va naviguer, effectivement non,
peut etre meme que je vais le supprimer de ma page, mais j'ai remarqué que beaucoup de gens avaient recontré le problème, ce code et les commentaires qui suivent pourront donc, je pense, être utile.
Je mettrais à jour le code pour permettre, comme tu le suggère, d'appliquer plusieurs classe aux liens.

signaler à un administrateur
Commentaire de jesusonline le 24/01/2007 10:55:29 administrateur CS

ils l'ont enlevé de XHTML car c'est à l'utilisateur de choisir s'il veut ou non ouvrir une nouvelle fenetre. Etre valide XHTML c'est pas seulement avoir le petit logo mais c'est aussi respecter la philosophie qu'il y a derriere.

signaler à un administrateur
Commentaire de hvb le 07/02/2007 11:01:57

C'est vrai, je suis d'ailleur passé en xhtml transitional pour ma part, mais comme je l'ai dit au dessus, je sais que pas mal de gens ont été ettoné par ça, et rien que notre conversation pourrait en interesser plus d'un.

signaler à un administrateur
Commentaire de abdoulax le 07/05/2007 20:04:23

Il y a une astuce bien plus simple qui consiste à faire un : onclick="window.open(this.href); return false;"
Surtout que ton script fait que tous tes liens s'ouvrent dans une nouvelle fenêtre.

De plus je suis d'accord avec JESUSONLINE sur le fait de respecter les normes et non d'essayer de passer à travers le robot de validation.
Cependant il vrai que dans certain cas on peut avoir besoin de forcer l'ouverture dans une nouvelle fenêtre mais ce cas doit être exeptionnel ou sinon il faut se tourner vers du xhtml transitional.

Voilà mon avis,

Have fun

signaler à un administrateur
Commentaire de hvb le 29/06/2007 16:57:58

"Il y a une astuce bien plus simple qui consiste à faire un : onclick="window.open(this.href); return false;""
-> Heuuu c'est justement ce que je fais, sauf que j'applique l'evenement de façon "dynamique" pour ne pas avoir à réecrire tout mes liens...

"Surtout que ton script fait que tous tes liens s'ouvrent dans une nouvelle fenêtre."
-> Non justement, seulement ceux qui font partie de la classe passée en paramêtre.


Faut que je prenne le temps de faire la modif proposée par JesusOnline, maintenant que les exams sont finis... y a plus que la flemme à combattre ^^

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

execCommand+createlink+target _blank [ par yanka ] Bonjour,Est-ce que vous pensez qu'il existe une solution pour utliser un execCommand et createlink et target _blank ?J'ai ce code:<script>functi Liste deroulante target_blank [ par thomcam ] Bonjours a tous jaimerai savoir si vous conaitriez un menu deroute qui avec un bouton GO ou autre qui ouvre la cible dans une nouvelle fenetre jai ess Faire en sorte que tt les liens d'une page s'ouvrent avec une target "_blank" [ par converse ] Bonjour à tous,J'ai cherché toute la matinée sans succès à savoir s'il existait un petit script à placer dans une page h XML probleme de lien... [ par SHIBALBAH ] Bonjour à tous,(je précise que je suis novice dans la création de site, j'utilise le logiciel flash)J'ai crée un menu en flash pour un site développé onglet [ par dede260 ] bonjour dans mon menu deroulant j'ai des liens vers d'autres sites ex: addMainItem("","Divers Liens",120,"center","","",0,0,"","","","",""); define form (target) et window.open [ par djagger ] Salut !J'ai un formulaire.La validation se fait dans une autre fenetre :<FORM TARGET="_blank" ....Ce que je voudrais faire, c'est que ma fenetre s' A l'aide (FireFox) [ par erickup ] Bonjour je suis complètement ignare en javascript. ce que je constate c'est que mon site fonctionne mal avec FireFox , alors qu'il fonctionne cor Event.target : BUG sous FireFox 2.0 [ par gipsy21 ] L'appel de event.target sous Firefox 2.0 ne renvoit pas le mm objet courant que sous une version antérieure à Firefox.2.0 :L'evènement clic par exempl Ouvrir une nouvelle fenetre en _blank à partir d'un select [ par Monico9385 ] Bonjour,comme dit dans le sujet, j'aimerai ouvrir une nouvelle fenetre à partir d'un select. et il n'y a pas l'attribut target sur cet élément, donc j mettre 2 comptes à rebours dynamique [ par Pedro08 ] Bonjour,J'ai un petit probleme de compte à rebours dynamique. Je voudrais afficher 2 compteurs sur ma page mais impossible de trouver la variable à mo


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,733 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.