function insert_html() { let elements = document.getElementsByClassName("insert_html"); for (let element of elements) { let path = (element.dataset.path); fetch(path) .then(response => response.text()) .then(data => element.innerHTML = data) .catch(error => console.log('Error:', error)); element.classList.replace("insert_html", "inserted_html"); }; } // create an observer on everytime some HTML is loaded on the whole page (heavy solution...) const callback = (mutation_list, observer) => insert_html(); const observer = new MutationObserver(callback); const targetNode = document.body; const config = { attributes: true, childList: true, subtree: true }; // Start observing the target node for configured mutations observer.observe(targetNode, config);