innerHTML에서이 문제가 발생하여 Reactjs 애플리케이션의 "head"태그에 Hotjar 스크립트를 추가해야했으며 추가 직후 실행해야했습니다.
"헤드"태그로 동적 노드를 가져 오기위한 좋은 솔루션 중 하나는 React-helment 모듈입니다.
또한 제안 된 문제에 대한 유용한 솔루션이 있습니다.
innerHTML에 스크립트 태그가 없습니다!
HTML5에서는 innerHTML 속성을 사용하여 스크립트 태그를 동적으로 추가 할 수 없습니다. 따라서 다음이 실행되지 않으며 Hello World!라는 경고가 표시되지 않습니다.
element.innerHTML = "<script>alert('Hello World!')</script>";
이것은 HTML5 사양에 설명되어 있습니다.
참고 : innerHTML을 사용하여 삽입 된 스크립트 요소는 삽입 될 때 실행되지 않습니다.
그러나 이것이 innerHTML이 사이트 간 스크립팅으로부터 안전하다는 것을 의미하지는 않습니다. MDN의 innerHTML 페이지 에 설명 된대로 태그를 사용하지 않고 innerHTML을 통해 JavaScript를 실행할 수 있습니다 .
솔루션 : 동적으로 스크립트 추가
스크립트 태그를 동적으로 추가하려면 새 스크립트 요소를 작성하여 대상 요소에 추가해야합니다.
외부 스크립트에 대해이 작업을 수행 할 수 있습니다.
var newScript = document.createElement("script");
newScript.src = "http://www.example.com/my-script.js";
target.appendChild(newScript);
인라인 스크립트 :
var newScript = document.createElement("script");
var inlineScript = document.createTextNode("alert('Hello World!');");
newScript.appendChild(inlineScript);
target.appendChild(newScript);