Каждый раз, когда я делаю вызов 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 так, чтобы мои скрипты были там включены.