11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

Tout est dans le titre, je ne comprends vraiment pas ce qui cloche!

Ceci ne fonctionne pas sur Safari:

[#black][b]HTML[/b][/#]

<!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" lang="fr">



<head>

	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
	
	<title>Exemple</title>
	
	<script type="text/javascript" src="script.js"></script>
	
</head>



<body>



</body>

</html>



[#black][b]JAVASCRIPT[/b][/#]

var chiffre = 1;
document.write('Ma variable vaut '+chiffre);


En ajoutant un simple balisage, tout fonctionne normalement:
var chiffre = 1;
document.write('<span>Ma variable vaut</span> '+chiffre);
Quelqu'un a-t-il une explication? Smiley sweatdrop

Cordialement,
Benjamin
Modifié par Benjamin D.C. (18 Apr 2007 - 12:25)
Salut,

document.write permet d'injecter du code dans le parseur à la suite de l'élément script en cours de traitement. Il se trouve que le tien est dans le head...

Je suppose que les différences constatées (chez moi, ça marche sous Firefox et Opera) sont dues aux différences de traitement d'erreur des navigateurs, puisque le code généré est invalide. On oublie en fait trop souvent qu'un code généré invalide est tout aussi dommageable qu'un code invalide dès le départ.

<edit>C'est d'ailleurs entre autres pour cela qu'il est préférable d'éviter document.write et innerHTML autant que possible. Avec les méthodes du DOM, le code généré aura beaucoup plus de chances d'être valide.
Modifié par Julien Royer (17 Apr 2007 - 17:56)