2013-10-27 2 views
0

변수 myVar이 노드인지 알고 싶습니다.변수가 노드인지 확인하는 방법은 무엇입니까?

내가 myVar.nodeType을 확인할 수 있습니다, 그러나 나는 그런 {nodeType:1}

에 속지 수, 나는

myVar instanceof Node 

편집

재미 같은 것을 할 수 있다면, 그것은 것 같다 궁금 Node 생성자가 있으므로 instanceof Node이 실제로 작동합니다!

내 생각 엔이 요청하기 전에 일 경우 내가 시도해야

...


이 다른 질문은 myVar는 노드 또는 비어 있음을 가정하기 때문에, Check if variable is a valid node element의 중복으로 내 질문을 표시하지 마십시오 . 하지만 내 질문은 아무것도 가정하지 않습니다.

+0

'myVar.nodeType === 1'의 문제점은 무엇입니까? – kol

+0

달성해야 할 브라우저 지원은 무엇입니까? 귀하의 제시된 코드는 IE <= 8에서 실패합니다. –

+0

@kol 내가 말했듯이, 나는 {nodeType : 1}':'{{nodeType : 1}}에 속아 넘어 질 수있다. 노드가 아닙니다 – Oriol

답변

3

window.document instanceof Node 다른 브라우저에서 시도해보십시오. IE11, GC30, FF24 및 Opera17에서 true을 반환하므로 다른 Node도 사용할 수 있습니다.

IE8과 같은 구형 브라우저의 경우 Node 인터페이스는 undefined입니다. 두 개의 interfacesdiv 노드에 대해 HTMLDivElement과 같이 테스트했지만 너무 구체적이어서 ||을 매우 긴 논리 표현식으로 사용해야합니다. IE8에서 가장 일반적인 인터페이스는 Element이고 window.document.body이고 자식 노드는 Element입니다. 흥미롭게도 window.document은 이 아닙니다 (HTMLDocument입니다).

+0

내 추측이 효과가 있었다면 해봤어야했는데, 기대하지 않았다. – Oriol

+1

@Oriol은'Node'가 실제로는 생성자가 아니라는 점에주의한다. , 노출 된 DOM 인터페이스 ([reference] (https://developer.mozilla.org/en-US/docs/DOM/DOM_Reference)). 내가 마지막으로 확인했을 때 노출 여부에 대한 표준은 없다. 따라서 지원하는 브라우저에서 작동하는지 확인해야합니다. –

관련 문제