MDN wants to learn about developers like you: https://qsurvey.mozilla.com/s3/MDN-survey

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

nodes
Un ensemble d'objets Node (noeud) ou DOMString (chaîne de caractères) à insérer.

Exceptions

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

Nous convertissons les données de compatibilité dans un format JSON. Ce tableau de compatibilité utilise encore l'ancien format car nous n'avons pas encore converti les données qu'il contient. Vous pouvez nous aider en contribuant !

Fonctionnalité Chrome Firefox (Gecko) Internet Explorer Edge Opera Safari
Basic support 54.0 49 (49) Pas de support Pas de support 39.0 Pas de support
Fonctionnalité Android Webview Firefox Mobile (Gecko) IE Mobile Edge Mobile Opera Mobile Safari Mobile Chrome for Android
Basic support ? 49.0 (49) Pas de support ? 39.0 Pas de support 54.0

Voir aussi

Étiquettes et contributeurs liés au document

Étiquettes : 
 Contributeurs à cette page : loella16
 Dernière mise à jour par : loella16,