2010-10-15 3 views
1

Pour une raison compliquée, je dois marquer un certain Javascript comme « spécial », comme ceci:Marquez quelques blocs Javascript comme « spécial »

<script type="text/javascript" someattribute="special"> 
    var special = "I'm special!"; 
</script> 

<script type="text/javascript" someattribute="special" src="special.js"> 
</script> 

Est-il possible de le faire de manière conforme aux normes XHTML ? Selon http://www.w3schools.com/tags/tag_script.asp, tous les attributs de l'étiquette de script ont des fonctions très spécifiques. Mais existe-t-il une solution de contournement? L'idée est de ramasser les étiquettes en tant qu'éléments XML et de les placer dans une autre page, au niveau du serveur, avant d'atteindre le navigateur. J'ai donc besoin de la marque spéciale dans le code XML de la page. L'ajouter une fois la page chargée, au niveau du navigateur, en utilisant Javascript, ne fonctionnera pas.

Des idées?


Edit:

Par souci de conformité aux standards, je ne peux pas utiliser HTML5. Le système entier que j'essaye d'être conforme est XHTML 1.0.

Maintenant que j'ai eu le temps d'y réfléchir, je pense que l'ajout d'une variable GET ou d'une ancre dans la commande src du script pourrait faire l'affaire. Par exemple, au lieu de l'exemple précédent, faire

<script type="text/javascript" src="special.js?special"></script> 

ou

<script type="text/javascript" src="special.js#special"></script> 

Je vais essayer maintenant.

+0

Y a-t-il une raison pour laquelle vous ne pouvez pas utiliser HTML5? Si vous voulez utiliser XHTML, vous pouvez utiliser XHTML5. Vous pouvez même l'écrire comme vous écrivez normalement XHTML 1.0, juste avec un doctype HTML5 (même si doctype n'est pas techniquement nécessaire, car XHTML n'a pas de mode quirks pour que le doctype puisse être ignoré en toute sécurité.) –

+0

Le site est principalement XHTML 1.0 Très peu de pages sont dynamiques L'organisation a mis l'accent sur la mise en conformité de l'ensemble du site XHTML 1.0 et pour le supporter. Si la page avec le HTML5 avait son code levé et inséré dans la page externe XHTML, cela fonctionnerait, mais ce serait désordonné, et le code interne ne pourrait pas être testé de manière fiable sur son site. Faire tout cela en XHTML a plus de sens à long terme, mais en utilisant les variables GET, j'ai fait le travail: – eje211

Répondre

0

Je repense à ce post longtemps après. C'est juste pour dire que ce que j'ai écrit dans mon édition a fonctionné et était conforme aux normes.

0

Si vous utilisez HTML5, vous pouvez le faire:

<script data-special='true'> 
</script> 

et il va valider. Cependant, autre que l'échec de la validation, vous pouvez vous en passer en mettant des attributs arbitraires sur les balises et cela fonctionnera généralement. L'utilisation de la convention HTML5 "data-" est un moyen sûr d'y aller, car vous avez 0% de chances de déclencher accidentellement un comportement étrange.

Notez qu'avec HTML5 vous n'avez pas besoin de l'attribut "type", et en fait il est déconseillé dans les cercles Javascript branchés.

0

Utilisez Data- * attributs .... Ils sont conformes aux normes:

<script data-foo="bar"> 
0

Avec XHTML vous êtes en mesure de créer votre propre DTD et avec votre propre DTD vous pouvez facilement ajouter un attribut supplémentaire à la balise de script. Cependant ... puisque vous voudrez probablement l'utiliser dans un vrai site web, cela ne fonctionnera pas car Internet Explorer ne supporte pas cela.

Je pense donc que ce sont vos choix:

  • envelopper une étiquette autour de lui pour le marquer comme spécial (conforme entièrement aux normes, fonctionne dans tous les navigateurs, mais pourrait ne pas fonctionner pour votre chèque)
  • Adhere aux normes et créer votre propre DTD qui un peu briser le soutien IE
  • ignorer les normes et juste ajouter un attribut (Noone outre le validateur W3 vraiment soin)

Si vous choisissez la dernière option, je suggère d'utiliser l'attribut id. Qui, bien que non pris en charge pour les balises script, est pris en charge à la fois dans html et xhtml en général afin que les navigateurs ne s'en soucient pas trop et la plupart des validateurs ne s'en soucient pas non plus.

+0

Y a-t-il une balise que je peux écrire autour de la tête ou juste dans le corps? – eje211

+0

quelque chose pour juste le corps. est un peu plus difficile. – Wolph