Salut,

Ca fait un petit moment que mon œil est attiré par des commentaires conseillant à certains de ne pas utiliser document.write() ou innerHTML...

J'ai demandé ce qui motivait ce genre de conseil, mais je n'en sais pas plus pour le moment.
Alors je cherche encore, car pour ce que j'en sais : Cette méthode et cette propriété fonctionnent très bien, et rien ne justifie un tel rejet.

A ce jour, la seule chose qui semble corroborer ce désire de ne "plus" les utiliser semble venir d'ici : Avoid document.write() and innerHTML().

Où un mauvais exemple (Si mauvais que ça ne fonctionnera pas) est donné, avec paragraphe et liste invalides :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
function fillContent() {
	document.write("<h1>Welcome to my site</h1>");
	document.write("<p>Lorem ipsum dolor sit amet");
	document.menu.innerHTML = "<ul><li><a href="foo.html">foo</a>";
}
Puis il est suggèré d'utiliser le code ci-dessous pour produire (?!?) le même résultat, tout en étant valide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function fillContent() {
	// parentelem is a specified element in the DOM
	var header = document.createElement("h1");
	header.insertText("Welcome to my site");
	var para = document.createElement("p");
	para.insertText("Lorem ipsum dolor sit amet");
	var list = document.createElement("ul");
	itemone = document.createElement("li");
	itemonelink = document.createElement("a");
	itemonelink.setAttribute("href","foo.html");
	itemonelink.insertText("foo");
	list.appendChild(itemone);
	parentelem.appendChild(header);
	parentelem.appendChild(para);
	parentelem.appendChild(list);
}
Bref ! Soyons clair dans ce genre de recommandations :
l'utilisation de document.write() et innerHTML doit être soumis à la condition de bien former son document.
C'est à dire qu'il soit validé par DOM.


N.B. : Si vous êtes convaincu que la préconisation donnée fait exactement la même chose que le mauvais exemple donné par le W3C, je pense que même l'utilisation de DOM ne viendra pas à votre secours

Alors, est-ce la seule motivation pour inciter à ne pas utiliser document.write() et innerHTML ?
Si c'est la seule, il n'y a vraiment pas de quoi torpiller cette méthode et cette propriété. Sinon, autant ne pas conseiller d'écrire de page HTML et de tout faire par DOM.