document.write() et innerHTML interdit ?
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. :roll:
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:
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:
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 :lol:
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.