>웹 프론트엔드 >JS 튜토리얼 >JavaScript에서 `innerHTML`을 사용할 때 스크립트가 실행되도록 하려면 어떻게 해야 합니까?

JavaScript에서 `innerHTML`을 사용할 때 스크립트가 실행되도록 하려면 어떻게 해야 합니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-11 10:55:10803검색

How Can I Ensure Scripts Execute When Using `innerHTML` in JavaScript?

.innerHTML로 삽입된 스크립트 실행

innerHTML을 사용하여 요소에 콘텐츠를 삽입하면 삽입된 콘텐츠 내의 스크립트가 실행되지 않는 문제가 발생할 수 있습니다. jQuery 또는 eval을 사용하는 솔루션이 존재하지만 순수 JavaScript를 사용하여 이 문제를 해결하는 코드 조각은 다음과 같습니다.

function setInnerHTML(elm, html) {
  elm.innerHTML = html;

  Array.from(elm.querySelectorAll("script"))
    .forEach(oldScriptEl => {
      const newScriptEl = document.createElement("script");

      Array.from(oldScriptEl.attributes).forEach(attr => {
        newScriptEl.setAttribute(attr.name, attr.value);
      });

      const scriptText = document.createTextNode(oldScriptEl.innerHTML);
      newScriptEl.appendChild(scriptText);

      oldScriptEl.parentNode.replaceChild(newScriptEl, oldScriptEl);
  });
}

이 함수는 요소와 HTML 문자열을 매개변수로 사용합니다. 요소의 innerHTML을 제공된 문자열로 바꾸고 HTML 내의 모든 스크립트 요소를 반복합니다. 각 스크립트 요소에 대해 동일한 속성과 스크립트 텍스트를 사용하여 새 요소를 만듭니다. 마지막으로 이전 스크립트 요소를 새 요소로 대체합니다.

이 기능을 사용하려면 요소의 innerHTML을 설정하면 됩니다.

.innerHTML = HTML;    // does *NOT* run <script> tags in HTML
setInnerHTML(, HTML); // does run <script> tags in HTML

위 내용은 JavaScript에서 `innerHTML`을 사용할 때 스크립트가 실행되도록 하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.