2016-06-02 9 views
4

domNode.isConnected ist eine Flagge, die in Chrom verfügbar ist. Es zeigt an, ob domNode Teil des Dokuments ist.
Ist es Cross-Browser-kompatibel?
Wenn nicht, gibt es eine effiziente Alternative für andere Browser? Bitte geben Sie den Link für alle verfügbaren Dokumente an.Zuverlässigkeit von 'isConnected' Feld in Dom-Knoten

+1

Das klingt ein wenig wie ein X/Y-Problem. Können Sie beschreiben, warum Sie wissen müssen, ob ein Element bereits Teil des DOM ist, da es möglicherweise eine bessere Möglichkeit gibt, das zu erreichen, was Sie benötigen. –

+0

Es gibt verschiedene Möglichkeiten zu wissen, ob ein Knoten Teil des Doms ist. Aber das fand ich am effizientesten, da es keine Durchquerung erfordert. Ich will nur mehr darüber wissen und ich kann nirgendwo etwas finden. –

+1

Kurz aber docs hier - https://dom.spec.whatwg.org/#dom-node-isconnected –

Antwort

10

Es wird nicht unterstützt, aber sehr einfach zu polyfill.

(function (supported){ 
 
    if (supported) return; 
 
    Object.defineProperty(window.Node.prototype, 'isConnected', {get}) 
 
    function get() { 
 
    return document.contains(this); 
 
    } 
 
})('isConnected' in window.Node.prototype);

+2

fyi: Dies funktioniert nicht für IE10, weil 'document.contains' nicht existiert: https: // connect. microsoft.com/IE/feedback/details/780874/node-contains-is-incorrect – Marius

+0

ti existiert nicht für * nodes *, aber existiert für * elements * – mkoryak

+0

Für IE könnten Sie document.body.contains verwenden. –

2

Ein schneller Test zeigt, dass Firefox diese Eigenschaft nicht unterstützt. Also die Antwort ist nein.

var input = document.getElementById('input'); 
 
alert(input.isConnected);
<input type="text" id="input">

https://jsfiddle.net/hu08awn0/

Verwandte Themen