> 웹 프론트엔드 > JS 튜토리얼 > JavaScript 개체가 DOM 요소인지 어떻게 확실하게 확인할 수 있습니까?

JavaScript 개체가 DOM 요소인지 어떻게 확실하게 확인할 수 있습니까?

Barbara Streisand
풀어 주다: 2024-10-26 22:55:03
원래의
641명이 탐색했습니다.

How can you reliably determine if a JavaScript object is a DOM element?

JavaScript 개체가 DOM 개체인지 확인하는 방법

JavaScript로 작업할 때 개체가 DOM 개체인지 확인해야 하는 경우가 종종 있습니다. DOM(문서 개체 모델) 요소입니다. 이러한 구별은 사용자 상호 작용을 처리하고, 페이지 요소를 조작하고, 적절한 기능을 보장하는 데 중요합니다.

일반적인 접근 방식 중 하나는 개체에 tagName 속성이 있는지 확인하는 것입니다. 그러나 이 방법은 DOM 요소가 항상 이 속성을 가지고 있다고 가정하므로 오류가 발생할 수 있습니다. 이 문제를 완전히 해결하려면 보다 강력한 솔루션이 필요합니다.

제안 솔루션

한 가지 대안은 HTMLElement 검사 인스턴스를 제공하는 W3 DOM2 사양을 활용하는 것입니다. 이 접근 방식은 Firefox, Opera 및 Chrome과 같은 브라우저에서 잘 작동합니다.

W3 DOM2를 지원하지 않는 브라우저의 경우 보다 포괄적인 접근 방식이 권장됩니다.

function isElement(obj) {
  try {
    return obj instanceof HTMLElement;
  } catch(e) {
    return (typeof obj === "object") &&
      (obj.nodeType === 1) &&
      (typeof obj.style === "object") &&
      (typeof obj.ownerDocument === "object");
  }
}
로그인 후 복사

이 코드는 다음을 테스트합니다. 모든 DOM 요소에 공통된 속성을 사용하여 신뢰할 수 있는 결정을 보장합니다.

대체 구현

또 다른 접근 방식은 DOM 노드와 DOM 요소 모두에 대해 별도의 기능을 정의하는 것입니다.

function isNode(o) {
  return (
    typeof Node === "object" ? o instanceof Node :
    o && typeof o === "object" && typeof o.nodeType === "number" && typeof o.nodeName==="string"
  );
}

function isElement(o) {
  return (
    typeof HTMLElement === "object" ? o instanceof HTMLElement :
    o && typeof o === "object" && o !== null && o.nodeType === 1 && typeof o.nodeName==="string"
  );
}
로그인 후 복사

이러한 기능은 DOM 내의 노드와 요소 모두에 대한 특정 요구 사항을 충족하면서 보다 정교한 검사를 제공합니다.

위 내용은 JavaScript 개체가 DOM 요소인지 어떻게 확실하게 확인할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿