Comment puis-je ajouter un élément de corps de vide DOM document?
J'ai cette chaîne qui représente le corps d'une page, que je voudrais analyser pour certains éléments. Je crois (n'hésitez pas à me contredire) la meilleure façon de le faire est de créer un document vide, puis ajouter le corps et l'utilisation standard de la JS méthodes pour obtenir ce que je veux.
Mais je ne semble pas être en mesure d'ajouter le corps du document. Dans chrome, le code suivant échoue sur la ligne 2 avec NO_MODIFICATION_ALLOWED_ERR: DOM Exception 7
.
var dom = document.implementation.createDocument('http://www.w3.org/1999/xhtml', 'html', null);
dom.firstChild.innerHTML = "<body><p>Hello world</p></body>";
Est-il possible de réaliser ce que je veux?
Double Possible: stackoverflow.com/questions/2521698/...
OriginalL'auteur Antoine | 2011-11-04
Vous devez vous connecter pour publier un commentaire.
Que nous sommes quelques années de plus que de l'origine, accepté de répondre, je voudrais donner un autre plus moderne.
Dans Firefox 50.0.2 vous pouvez faire ceci:
Ici, le corps est créée et affectée directement à "document.corps".
Un peu de lecture (https://html.spec.whatwg.org/multipage/dom.html#the-body-element-2) m'a fait comprendre, que le document de l'attribut "corps" peut être "null" ou contenir un objet de type "corps" ou (non recommandé) "frameset".
Ce qui suit ne pas travail, c'est à dire produit une page blanche, parce que la cession de document".corps" est manquant:
Au lieu de
document.body = body;
vous pouvez faire ceci:document.documentElement.appendChild(body);
, alors quedocument.firstChild.appendChild(body);
renvoie une erreur ("HierarchyRequestError: Nœud ne peut pas être inséré au point spécifié dans la hiérarchie").On peut avancer que, si l'ajout d'un paragraphe par l'évaluation de innerHTML est la meilleure façon, mais c'est une autre histoire.
OriginalL'auteur JosefScript
J'ai remarqué dans les dernières versions de chrome, Antoine réponse ne fonctionne pas - vous obtenez une page blanche. Ceci, cependant, ne fonctionne dans chrome:
body.createElement
??? si non pourquoi ?Je ne sais pas. Pourquoi ne pas lui donner un essai et un rapport ici? : )
je pense que le document est l'objet et le corps est le nœud donc on ne peut pas faire ?
Eh bien, vous n'aurez pas un document.corps si il n'y a pas de corps de la page. C'est tout l'intérêt de cette question. Je ne pense pas que je comprends votre confusion
bon après-midi . je pense que nous ne pouvons pas faire
html.createElement
OriginalL'auteur B T
Il n'est pas possible de modifier le innerHTML de l'élément racine, mais de le faire d'un nœud enfant est possible. Donc, cela fonctionne:
J'ai remarqué que tout contenu ajouté sur le corps de l'objet de l'habitude " apparaissent, mais si vous ne setTimeout(function(){document.corps.innerHTML="quelque chose"},0), il n'travail
OriginalL'auteur Antoine