Saya punya masalah dengan innerHTML ini, saya harus menambahkan skrip Hotjar ke tag "head" aplikasi Reactjs saya dan harus dijalankan segera setelah menambahkan.
Salah satu solusi bagus untuk impor Node dinamis ke tag "head" adalah modul React-helment .
Juga, ada solusi yang berguna untuk masalah yang diusulkan:
Tidak ada tag skrip di innerHTML!
Ternyata HTML5 tidak memungkinkan tag skrip ditambahkan secara dinamis menggunakan properti innerHTML. Jadi yang berikut tidak akan dieksekusi dan tidak akan ada peringatan yang mengatakan Hello World!
element.innerHTML = "<script>alert('Hello World!')</script>";
Ini didokumentasikan dalam spesifikasi HTML5:
Catatan: elemen skrip yang dimasukkan menggunakan innerHTML tidak dieksekusi ketika mereka disisipkan.
Namun berhati-hatilah, ini tidak berarti innerHTML aman dari skrip lintas situs. Dimungkinkan untuk menjalankan JavaScript melalui innerHTML tanpa menggunakan tag seperti yang diilustrasikan pada halaman innerHTML MDN .
Solusi: Menambahkan skrip secara dinamis
Untuk menambahkan tag skrip secara dinamis, Anda perlu membuat elemen skrip baru dan menambahkannya ke elemen target.
Anda dapat melakukan ini untuk skrip eksternal:
var newScript = document.createElement("script");
newScript.src = "http://www.example.com/my-script.js";
target.appendChild(newScript);
Dan skrip sebaris:
var newScript = document.createElement("script");
var inlineScript = document.createTextNode("alert('Hello World!');");
newScript.appendChild(inlineScript);
target.appendChild(newScript);