При переходе на другую страницу скрипт почему-то не загружается заново
Есть расширение для браузера, оно работает с сайтом YouTube. При переходе на другую страницу скрипт почему-то не загружается заново, а на новой странице остается то же содержание insertAdjacentHTML что и на предыдущей странице. Что я делаю не так? Что стоит попробовать?
window.addEventListener('load', function(){
function injectScript() {
if(document.querySelector('#a') === null && document.querySelector('#player.style-scope') !== null){
Array.from(document.querySelectorAll('#player')).pop().insertAdjacentHTML("afterend", `<div id="a">Код</div>`);
// Код
}
}
const element = document.querySelector('body');
function childList(list){
injectScript();
}
let callback = function(mutations, observer) {
mutations.forEach(function(mutation) {
if(mutation.type === 'childList'){
childList(mutation);
}
});
}
const mutationObserver = new MutationObserver(callback);
const config = {
childList: true,
subtree: true
};
mutationObserver.observe(element, config);
})
Ответы (1 шт):
Современные сайты-приложения не перезагружают страницы. Они просто меняют содержимое так, что нам кажется, что мы перешли на новую страницу. Проверить это можно открыв вкладку Сеть в инструментах разработчика в браузере и походить по сайту. Если запросов на страницу (Doc) нет, значит всё меняется динамически (через Fetch/XHR).
В интернете советуют повесить MutationObserver следить за изменениями на странице и проверять не поменялся ли location.href.