После того, как я изменил содержание HTML, страница мигает - PullRequest
1 голос
/ 25 октября 2019

Каждый раз, когда я делаю вызов ajax, я заменяю весь html новым контентом на $("...").html(ajaxresponse). Если я использую браузер Firefox, страница мигает после того, как я заменяю контент. На Chrome не так уж и много, но у меня опыт этой перепрошивки иногда тоже есть.

Вот мой код:

function AJAXFormPost(data, formAction) {
    var httpRequest = new XMLHttpRequest();
    var formData = new FormData();

    Object.keys(data).forEach(function(key) {
        formData.append(key, data[key]);
    });

    httpRequest.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
            // replace HTML content

            $("body").html(this.responseText.match(/<\s*body.*>[\s\S]*<\s*\/body\s*>/ig).join(""));
            $("head").html(this.responseText.match(/<\s*head.*>[\s\S]*<\s*\/head\s*>/ig).join(""));
            // Update url

            if (test_type == "explorer"){
                // call the doTimer function only when the timer is off and test is not finished
                if (!isTestFinished && !JSON.parse(sessionStorage.getItem("timerIsOn"))) {
                    timedCount();
                }
            }
            test_mode = window.location.href.split('/')[3];                 
            question_number = document.getElementById("lblNrCrt").textContent;  

            pageUrl = "/" + test_mode + "/" + test_uuid + "/" + question_number + "/";
            window.history.pushState('', '', pageUrl);
        }
    };

    httpRequest.open("post", formAction);
    httpRequest.send(formData);

}

У моего шаблона есть скрытый элемент div, и при замене содержимого он также отображается в течение нескольких миллисекунд.

страница только мигает, когда я заменяю элемент head таким образом. Если я заменю только элемент тела, я не получу эту вспышку. Но мне нужно изменить элемент head так, чтобы мои скрипты были там включены.

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