ChildNode.before()
Experimental
Cette fonction est expérimentale
Puisque cette fonction est toujours en développement dans certains navigateurs, veuillez consulter le tableau de compatibilité pour les préfixes à utiliser selon les navigateurs.
Il convient de noter qu'une fonctionnalité expérimentale peut voir sa syntaxe ou son comportement modifié dans le futur en fonction des évolutions de la spécification.
La méthode ChildNode.before
insère un ensemble d'objets Node
(noeud) ou DOMString
(chaîne de caractères) dans la liste des enfants du parent du ChildNode
, juste avant ce ChildNode
. Des objets DOMString
sont insérés comme noeuds équivalents à Text
.
Syntaxe
[Throws, Unscopable] void ChildNode.before((Node or DOMString)... nodes);
Paramètres
Exceptions
HierarchyRequestError
: Le noeud ne peut être inséré au point spécifié dans la hiérarchie.
Exemples
Insertion d'un élément
var parent = document.createElement("div");
var child = document.createElement("p");
parent.appendChild(child);
var span = document.createElement("span");
child.before(span);
console.log(parent.outerHTML);
// "<div><span></span><p></p></div>"
Insertion de texte
var parent = document.createElement("div");
var child = document.createElement("p");
parent.appendChild(child);
child.before("Text");
console.log(parent.outerHTML);
// "<div>Text<p></p></div>"
Insertion d'un élément et de texte
var parent = document.createElement("div");
var child = document.createElement("p");
parent.appendChild(child);
var span = document.createElement("span");
child.before(span, "Text");
console.log(parent.outerHTML);
// "<div><span></span>Text<p></p></div>"
ChildNode.before()
est inaccessible
La méthode before()
n'est pas comprise dans l'instruction with
. Voir Symbol.unscopables
pour plus d'informations.
with(node) {
before("foo");
}
// ReferenceError: before is not defined (before n'est pas défini)
Polyfill
Vous pouvez utiliser un polyfill pour la méthode before()
dans Internet Explorer 9 et supérieur avec le code suivant :
// from: https://github.com/jserz/js_piece/blob/master/DOM/ChildNode/before()/before().md
(function (arr) {
arr.forEach(function (item) {
if (item.hasOwnProperty('before')) {
return;
}
Object.defineProperty(item, 'before', {
configurable: true,
enumerable: true,
writable: true,
value: function before() {
var argArr = Array.prototype.slice.call(arguments),
docFrag = document.createDocumentFragment();
argArr.forEach(function (argItem) {
var isNode = argItem instanceof Node;
docFrag.appendChild(isNode ? argItem : document.createTextNode(String(argItem)));
});
this.parentNode.insertBefore(docFrag, this);
}
});
});
})([Element.prototype, CharacterData.prototype, DocumentType.prototype]);
Spécification
Spécification | Statut | Commentaire |
---|---|---|
DOM La définition de 'ChildNode.before()' dans cette spécification. |
Standard évolutif | Définition initiale. |
Compatibilité des navigateurs
BCD tables only load in the browser