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 = "&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.01 Transitional//EN&quot; nt&quot;http://www.w3.org/TR/html4/loose.dtd&quot;&gt;n&lt;html&gt;n&lt;head&gt;nt&lt;title&gt;Greetings!&lt;/title&gt;n&lt;/head&gt;n&lt;body&gt;nt&lt;p&gt;Howdy!&lt;/p&gt;n&lt;/body&gt;n&lt;/html&gt;";
    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>
26
demandé sur Web_Designer 2011-07-20 10:53:47

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).

24
répondu wchargin 2013-05-06 22:06:12

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.

26
répondu Mathias Bynens 2012-02-27 07:02:08

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 ;)

8
répondu fred727 2015-10-08 16:06:10

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.

2
répondu Matthieu Charbonnier 2017-07-13 08:39:37