11548 sujets

JavaScript, DOM et API Web HTML5

Salut,
j'écris un site HTML statique (pas de serveur, doit pouvoir être distribué sur CD) avec utilisation de CSS. Comme de raison, j'utilise une feuille CSS pour Firefox et une autre feuille pour IE. Les autres navigateurs ne font pas partie de ma cible. Je place au début de chaque page un code Javascript qui choisit une feuille CSS en fonction du navigator.userAgent.

Malheureusement, à partir du Windows SP2, IE n'autorise plus par défaut le javascript. Lorsque je lance ma page, il affiche le message "Pour vous aider à protéger votre ordinateur, Internet Explorer a restreint l'affichage du contenu actif de ce fichier, qui pourrait accéder à votre ordinateur." Mes utilisateur ayant des notions d'informatique approximatives (surtout ceux sous IE), ce message risque de les inquiéter.

Il m'est possible de définir par défaut la feuille CSS pour IE (directement en HTML dans le header) et de la remplacer par celle de Firefox dans un code javascript. Dans ce cas, le code Javascript n'a besoin d'être lancé que si le navigateur est Firefox. Lorsque le navigateur est IE, il me faudrait un moyen de ne pas lancer le code javascript du tout. La question que je me pose, est la suivante: est-il possible de placer dans une page un code Javascript qui sera interprété si le navigateur est Firefox mais pas si il s'agit de IE. Plus concrètement: Y a-t-il une commande ou un bug connu de IE qui fasse que, dans un cas précis, IE est incapable de lancer un code javascript alors que Firefox oui.

Si une telle commande ou un tel bug existe uniquement pour IE 6, je suis preneur. Si il fonctionne aussi pour IE 7, c'est mieux.

M (Bug user)
Modifié par bbtSF (19 Jul 2007 - 12:03)
bbtSF a écrit :
Salut,
j'écris un site HTML statique (pas de serveur, doit pouvoir être distribué sur CD) avec utilisation de CSS. Comme de raison, j'utilise une feuille CSS pour Firefox et une autre feuille pour IE. Les autres navigateurs ne font pas partie de ma cible. Je place au début de chaque page un code Javascript qui choisit une feuille CSS en fonction du navigator.userAgent.

Malheureusement, à partir du Windows SP2, IE n'autorise plus par défaut le javascript. Lorsque je lance ma page, il affiche le message "Pour vous aider à protéger votre ordinateur, Internet Explorer a restreint l'affichage du contenu actif de ce fichier, qui pourrait accéder à votre ordinateur." Mes utilisateur ayant des notions d'informatique approximatives (surtout ceux sous IE), ce message risque de les inquiéter.

Il m'est possible de définir par défaut la feuille CSS pour IE (directement en HTML dans le header) et de la remplacer par celle de Firefox dans un code javascript. Dans ce cas, le code Javascript n'a besoin d'être lancé que si le navigateur est Firefox. Lorsque le navigateur est IE, il me faudrait un moyen de ne pas lancer le code javascript du tout. La question que je me pose, est la suivante: est-il possible de placer dans une page un code Javascript qui sera interprété si le navigateur est Firefox mais pas si il s'agit de IE. Plus concrètement: Y a-t-il une commande ou un bug connu de IE qui fasse que, dans un cas précis, IE est incapable de lancer un code javascript alors que Firefox oui.

Si une telle commande ou un tel bug existe uniquement pour IE 6, je suis preneur. Si il fonctionne aussi pour IE 7, c'est mieux.

M (Bug user)


Si tu as une feuille de style par navigateur c'est que ton travaille doit être mal fait. Smiley decu

Je te conseille largement de prendre plutôt le chemin simple, c'est à dire une feuille de styles pour tous les navigateurs, puis ensuite une feuille de style qui corrige les problèmes pour IE, mais cette feuille de styles, tu l'appelles via des commentaires conditionnels


<!--[if lt IE6]>
		<link rel="stylesheet" type="text/css" media="all" href="css/styles_ie5.css" />
		<script type="text/javascript" src="js/JSL.js"></script>
	<![endif]-->


Mais si tu es un gros faineant et que tu veux quand meme que ton JS fonctionne, il suffit de rajouter un Mark Of The web juste avant la balise HTML (si tu as un doctype, place le mark of the web sous le doctype).


<! Doctype ........>
<!-- saved from url=(0014)about:internet -->
<html>

Modifié par Gatsu35 (19 Jul 2007 - 01:03)
<comment><script>...</script></comment>

Je plaisante, bien sûr. c'est pas valide W3C du tout, évidemment.

A part ça ou utiliser la faille critique d'IE exposée ci-dessus, pas de moyen moins tendancieux (pour moi, la combine ci-dessus est une faille dans la mesure où elle serait probablement capable d'effectivement exécuter un script dangereux). Le moteur trouve <script> et sans même savoir ce qu'il y a dedans, affiche l'avertissement.

Idiotie qu'est ce message, j'en conviens totalement : combien de messages sur les forums ont déjà été postés pour demander « pourquoi mon site fonctionne en ligne et pas en local sur IE ? », à cause de ce message stupide.

Bon, après avoir raconté une bêtise pareille, je m'en vais au lit. C'était mon délire de jeudiste et je m'excuse pour les 22 heures d'avance.
> Si tu as une feuille de style par navigateur c'est que ton travaille doit être mal fait.

En fait, j'ai essayé la feuille de style commune et je me suis très vite aperçu des divergences d'interprétation entre IE et Firefox. Impossible de faire une feuille de style qui marche sur les deux.

Les commentaires conditionnels me plaisent bien.
Je pense que je vais me retrouver avec le chargement de mon CSS Firefox de base suivi d'un chargement de mon CSS IE dans un commentaire conditionnel qui ira écraser les règles définies précédement.

L'étape CSS de correction pour IE sera pour une autre fois...