Я удаляю скрипт, но когда его ставят обратно, он говорит, что он уже существует - PullRequest
0 голосов
/ 07 января 2019

Я делаю сайт «на одну страницу», где основной скрипт удаляет и добавляет скрипт на каждую страницу.

Но ... когда вы перезагружаете предыдущую страницу, он дублирует скрипт, поэтому дублирует существующие функции.

Это скрипт изменения страницы:

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;
}

Я уже пробовал несколько способов, но ни один не удался.

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...