Я делаю сайт «на одну страницу», где основной скрипт удаляет и добавляет скрипт на каждую страницу.
Но ... когда вы перезагружаете предыдущую страницу, он дублирует скрипт, поэтому дублирует существующие функции.
Это скрипт изменения страницы:
let scriptBody = null;
function GetPageOnBody(page) {
$.get("pages/"+page+".html", function(site){
if(scriptBody != null) removejsfile(scriptBody);
$('#pageBody').html(site);
scriptBody = document.createElement('script');
switch(page){
case "login":
window.document.title = "LOGIN - DASHBOARD";
scriptBody.setAttribute('src', "assets/js/page-login.js");
break;
case "home":
window.document.title = "HOME - DASHBOARD";
scriptBody.setAttribute('src', "assets/js/page-home.js");
break;
case "artigos":
window.document.title = "ARTIGOS - DASHBOARD";
scriptBody.setAttribute('src', "assets/js/page-artigos.js");
break;
}
document.body.appendChild(scriptBody);
}).fail(function(){
// error 404 page
}).done(function(){
// show page
});
}
Это код для удаления скрипта:
function removejsfile(script){
let filename = script.getAttribute("src").split("/").slice(-1);
let allscripts = document.getElementsByTagName("script");
for (let i = allscripts.length; i >= 0; i--){
if (allscripts[i] && allscripts[i].getAttribute("src") != null && allscripts[i].getAttribute("src").indexOf(filename) != -1)
allscripts[i].parentNode.removeChild(allscripts[i]);
}
delete script;
}
Я уже пробовал несколько способов, но ни один не удался.
Спасибо