Problème de XHTML dans un Javascript [Résolu][XHTML/Javascript/W3C] - HTML/CSS - Programmation
Marsh Posté le 21-10-2006 à 18:44:11
tizard a écrit : Bonjour, |
Dzzzzt erreur ! L'XHTML 1.1 n'est pas géré par IE, et doit être envoyé aux agent-utilisateurs avec le type mime application/xhtml+xml. Veuillez recommencer en Xhtml 1.0
Marsh Posté le 21-10-2006 à 18:44:58
tizard a écrit :
|
Bienvenue dans le bordel de l'XHTML, le vrai. Conseil : ne met jamais de script comme ça dans le code XHTML direct, externalise les tous dans un fichier à part
Marsh Posté le 21-10-2006 à 18:48:54
Je met au passage un message pour déconseiller les utilisateurs de IE < 7 à ce site ^^ mais le problème n'est pas à ça...
C'est impossible même d'appeler une fonction avec un argument XHTML ?
Enfin les externaliser good, mais faut bien les appeler ! et pour les appeler, il faut bien faire un script comme ça, non ?
Marsh Posté le 21-10-2006 à 18:53:28
Ben non, pas obligé, t'as juste à remplacer ton truc par :
Code :
|
Et faire un fichier pouet.js avec dedans :
Code :
|
Et voilà
Marsh Posté le 21-10-2006 à 18:55:22
truc bien lourd quoi lol... ^^
et les messages où il n'y a pas de xhtml dedans je peux les mettre direct, ça posera pas trop de problème ?
Marsh Posté le 21-10-2006 à 18:55:59
Ouais, mais comme dit, pas top. En plus si c'est externalisé, c'est mis en cache par les navigateurs, donc moins de charge pour ton serveur...
Marsh Posté le 21-10-2006 à 18:57:29
ça veut dire que je suis partit pour créer 15 000 fichiers :
Bon merci beaucoup de ton aide ultra-rapide
++
Marsh Posté le 21-10-2006 à 20:27:29
Bon alors, j'aime bien finir ce que je fais, donc je poste ici la solution que j'ai prise
Je ne pouvais pas créer 12 000 fichiers, puisque les messages à mettre sont dynamiques et peuvent donc changer en fonction du message que je veux mettre
Donc j'ai presque suivi ta solution, sauf que j'ai fait un
echo '<script type="text/javascript" src="func.php?message='.urlencode($message).'"></script>';
La page func.php fait un urldecode sur ce message et exécute le script
(bien sûr func.php => header("Content-Type: text/javascript" ); en premier lieu)
Voilà bon c'était juste pour conclure
Marsh Posté le 22-10-2006 à 10:47:35
ReplyMarsh Posté le 22-10-2006 à 14:09:23
FlorentG a écrit : Pourrait-tu poster le contenu de func.php ? Histoire de vérifier un truc |
Ok alors je commence par la fonction PHP loadpopup donc je me sert en premier lieu :
Code :
|
lpop.php:
Code :
|
pop.js
Code :
|
(et dans le body il faut que je mette
Code :
|
(je met le CSS approprié pour les interessé ^^)
Code :
|
Donc voilà cette fonction met un foreground gris à 50% d'opacité mais caché au début, lorsqu'on lance la fonction cela affiche le foreground et modifie le div central (qui était caché aussi) pour écrire ce que l'on veut dedans. Notez que j'ai désactivé la fonction du foreground si IE < 7 car ça déconne (ça n'est pas une question de transparence, mais que le foreground ne s'affiche bizarrement qu'en haut à gauche de l'écran, un tout petit rectangle...)
Voili
Marsh Posté le 22-10-2006 à 14:19:08
Ok, donc y'a un possible problème de sécurité qui permetterait d'injecter du JS arbitraire, et par exemple de récupérer les cookies du domaine -> Faille de type XSS (cross site scripting)
T'as presque fait ce qu'il fallait, t'as mis un addslashes sur $_GET['msg']. Mais tu dois aussi le faire sur les autres : height, width et ie.
Marsh Posté le 22-10-2006 à 14:43:51
Ok je le fais, merci (cela dit personne ne connait l'existance du fichier lpop... je pourrais autant le mettre en .inc ce qui limiterait tout, non ?)
Marsh Posté le 22-10-2006 à 15:12:32
On connait pas l'existence du fichier, mais on peut facilement voir que le fichier contient des données passées en paramètres, donc modifiable. Deux-trois test, et hop !
Marsh Posté le 21-10-2006 à 18:42:34
Bonjour,
j'ai un petit problème, je construis un site (jeu)et il a toujours été valide W3C pour l'instant (XHTML 1.1)
Mais je commence à utiliser un script en javascript avec une fonction avec un argument "textuel" (la fonction va en fait afficher un DIV au millieu de l'écran et mettre le texte inclu dans l'argument dans le Div)
Bref le problème n'est pas là, mais juste que W3C refuse d'afficher ceci :
Erreur : impossible de mettre un <br /> dans cet endroit. (ce script est dans un div, dans le body)
Erreur :
Error Line 52 column 57: document type does not allow element "br" here.
pop("Choisissez l\'arme pour équiper votre troupe : <br />", "200", "300", "" );
The element named above was found in a context where it is not allowed. This could mean that you have incorrectly nested elements -- such as a "style" element in the "body" section instead of inside "head" -- or two elements that overlap (which is not allowed).
One common cause for this error is the use of XHTML syntax in HTML documents. Due to HTML's rules of implicitly closed elements, this error can create cascading effects. For instance, using XHTML's "self-closing" tags for "meta" and "link" in the "head" section of a HTML document may cause the parser to infer the end of the "head" section and the beginning of the "body" section (where "link" and "meta" are not allowed; hence the reported error).
Merci de m'aider !
Message édité par tizard le 21-10-2006 à 20:28:04