2016-06-02 2 views
4

domNode.isConnected은 크롬에서 사용할 수있는 플래그입니다. domNode가 문서의 일부인지 여부를 보여줍니다.
크로스 브라우저 호환이 가능합니까?
다른 브라우저의 경우 효율적인 대안이 없습니까? 사용 가능한 모든 설명서 링크를 제공하십시오.dom 노드의 'isConnected'필드의 신뢰성

+1

이는 X/Y의 문제처럼 작은 소리. 요소를 DOM에 이미 포함했는지 여부를 알아야하는 이유를 설명 할 수 있습니다. 필요한 요소를 얻을 수있는 더 나은 방법이있을 수 있습니다. –

+0

노드가 dom에 속하는지 알 수있는 다양한 방법이 있습니다. 그러나 이것은 순회를 필요로하지 않기 때문에 가장 효율적이라고 생각했습니다. 나는 이것에 관해 더 많이 알고 싶다. 그리고 나는 그것에 대해 어떤 것을 발견 할 수 없다. –

+1

간단하지만 여기에있는 문서 - https://dom.spec.whatwg.org/#dom-node-isconnected –

답변

10

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

하지만 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 :'document.contains'가 없기 때문에 IE10에서는 작동하지 않습니다. https : // connect. microsoft.com/IE/feedback/details/780874/node-contains-is-incorrect – Marius

+0

ti가 * nodes *에 대해 존재하지 않지만 * 요소에 대해 존재합니다. * – mkoryak

+0

IE의 경우 document.body.contains를 사용할 수 있습니다. –

2

빠른 테스트는 Firefox가이 속성을 지원하지 않음을 보여줍니다. 그래서 대답은 '아니오'입니다.

https://jsfiddle.net/hu08awn0/이 지원되지 않습니다