document javascript.innerHTML définir le contenu du document entier
Comment puis-je définir le innerHTML
, ou tout le contenu D'un document HTML en utilisant javascript?
Par exemple, mon document ressemblerait à ceci:
<!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="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-language" content="en"/>
<title>Webpage Generator</title>
<script type="text/javascript">
var newDocument = "<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" nt"http://www.w3.org/TR/html4/loose.dtd">n<html>n<head>nt<title>Greetings!</title>n</head>n<body>nt<p>Howdy!</p>n</body>n</html>";
document.innerHTML = newDocument;
</script>
</head>
<body>
</body>
</html>
Mais le navigateur chargerait le code HTML suivant:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Greetings!</title>
</head>
<body>
<p>Howdy!</p>
</body>
</html>
4 réponses
Si vous ne voulez pas utiliser innerHTML, vous pouvez utiliser document.write(newDocument);
.
Si le document n'est pas complètement chargé, vous devrez également mettre document.open()
(Merci bažmegakapa).
document.innerHTML
est nouveau en HTML5 et n'est pas pris en charge dans tous les navigateurs.
document.documentElement
fait référence à l'élément racine de votre document, qui dans ce cas est l'élément <html>
.
Donc, vous pouvez définir document.documentElement.innerHTML
. Notez que puisque le DOCTYPE tombe en dehors de cela, il n'est donc pas nécessaire de l'inclure dans le innerHTML
.
Exemple (essayez d'exécuter ceci dans la console JS de votre navigateur):
document.documentElement.innerHTML = '<title>Test</title><p>LOLWAT';
Mise à jour: document.innerHTML
déplacé de la spécification HTML à L'analyse DOM et Spécification de sérialisation , et plus tard a été supprimé. L'alternative suggérée est d'utiliser DOMParser :
var doc = (new DOMParser).parseFromString('<!doctype html><title>wat</title>', 'text/html');
Malheureusement, au moment de l'écriture, la plupart des navigateurs ne supportent pas encore cela pour HTML.
Utilisez ce code (après le chargement du document actuel):
document.open("text/html", "replace");
document.write(htmlCode); // htmlCode is the variable you called newDocument
document.close();
Live exemple ici : http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_doc_open
Espérons que cette aide ;)
Simple:
document.body.parentElement.innerHTML = '<html><body><div>Your code</div></body></html>';
Notez qu'il n'interprétera pas le code JS intégré dans votre code html.