"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > DOM 속성 변경을 감지하고 대응하는 방법: MutationObserver와 레거시 메서드?

DOM 속성 변경을 감지하고 대응하는 방법: MutationObserver와 레거시 메서드?

2024-11-02에 게시됨
검색:691

How to Detect and Respond to DOM Attribute Changes: MutationObserver vs. Legacy Methods?

DOM 속성 변경 시 이벤트 트리거

많은 시나리오에서는 이미지 소스가 변경되거나 div의 HTML이 변경되는 경우와 같이 DOM 속성의 변경을 감지해야 합니다. 콘텐츠 업데이트. 이 기능에 대한 브라우저 지원은 시간이 지남에 따라 발전했습니다.

DOM Mutation Events(Legacy)

과거에는 DOM Mutation Events가 속성 변경을 수신하는 방법을 제공했습니다. 이러한 이벤트에는 다음이 포함됩니다.

  • DOMAttrModified
  • DOMNodeInserted
  • DOMNodeRemoved

그러나 DOM 돌연변이 이벤트에 대한 브라우저 지원은 일관성이 없었습니다.

MutationObserver API

DOM Mutation Events를 대체하기 위해 MutationObserver API가 도입되었습니다. MutationObserver는 DOM 속성 및 DOM의 다른 측면의 변경을 감지하는 보다 강력하고 널리 지원되는 방법을 제공합니다.

MutationObserver를 사용하면 관찰자 인스턴스를 만들고 모니터링하려는 변경 유형을 지정할 수 있습니다. 관찰자는 DOM에서 일치하는 변경 사항이 발생하면 알려줍니다.

다음은 MutationObserver를 사용하여 이미지 소스 속성의 변경 사항을 감지하는 방법에 대한 예입니다.

// Create an observer instance
const observer = new MutationObserver((mutations) => {
  for (const mutation of mutations) {
    // Check if the mutation is for the "src" attribute
    if (mutation.attributeName === "src") {
      // Do something in response to the source change
    }
  }
});

// Start observing the specified target node
observer.observe(image, { attributes: true, attributeFilter: ["src"] });

이 예에서 관찰자는 이미지 노드의 src 속성을 감시하도록 구성되었으며 지정된 콜백을 호출합니다. 해당 속성이 변경될 때마다.

jQuery Mutation Events 플러그인

jQuery를 사용하는 경우 MutationObserver 대신 Mutation Events 플러그인을 활용할 수 있습니다. 이 플러그인은 DOM 속성 변경을 처리하기 위한 단순화된 인터페이스를 제공하며 특정 속성 변경에만 관심이 있는 경우 유용할 수 있습니다.

$(image).on("DOMAttrModified", (event) => {
  if (event.attrName === "src") {
    // Do something in response to the source change
  }
});

MutationObserver 또는 jQuery Mutation Events 플러그인을 활용하면 DOM 속성의 변경 사항을 효과적으로 감지하고 해당 변경 사항에 대한 응답으로 사용자 지정 작업을 실행할 수 있습니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3