Вопрос по javascript, jquery – Как проверить, что страница перезагружается или обновляется с помощью jquery или javascript?

16

Я должен сделать какую-то операцию на странице обновления или перезагрузки. это когда я нажимаю на следующую страницу или фильтрую или обновляю сетку. Мне нужно показать какое-нибудь окно подтверждения над этими событиями.

Есть ли какое-либо событие, которое может сказать вам, что страница делает filer? обновить или пейджинг? используя JavaScript?

Спасибо

Ваш Ответ

4   ответа
1

я думаю, что это очень важно.

Во-первых, система обновления / скрытого поля работает с началом новой копии страницы, а не с первой копии страницы.

Из моего исследования этого метода и нескольких других, нет способа, в первую очередь из-за стандартов конфиденциальности, обнаружить обновление страницы во время выгрузки или ранее. только после загрузки новой страницы и позже.

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

close the current window (fires onbeforeunload and onunload js events). request the page as if you never had it. Session on server of course has no issue, but no querystring changes/added values to the page's last used url.

Это происходит именно в таком порядке. Только пользовательский или нестандартный браузер будет вести себя иначе.

19

window.onunload будет стрелять

// From MDN
window.onunload = unloadPage;
function unloadPage()
{
    alert("unload event detected!");
}

https://developer.mozilla.org/en/DOM/window.onunload

Если вы просто хотите, чтобы окно подтверждения позволяло им остаться, используйте это:

window.onbeforeunload = function() {
    return "Are you sure you want to navigate away?";
}
Конечно, это плохое поведение, но ОП хотел определить, когда страница обновляется, и теперь он может. Должен ли он? Это его прерогатива.
+1 .. точнее один .. работает во всех браузерах
@MetalPhoenix, конечно, будет. Не нужно опускать голову до того, что признает любой компетентный разработчик.
Это также срабатывает, когда пользователь закрывает браузер или страницу, или когда пользователь пытается уйти.
Но это не отвечает на вопрос. Вопрос заключается в том, чтобы конкретно проверить, перезагружается ли страница, и зафиксировать это событие. В этом случае он все равно будет срабатывать, если браузер будет закрыт, что вынуждает пользователя подтвердить, прежде чем он сможет закрыть браузер. Это плохое поведение, которое любой компетентный разработчик знал бы не делать.
3

грузке страницы. Когда страница снова загрузится, вы можете проверить скрытое поле. Если она пуста, то страница загружается в первый раз, иначе она обновляется. Что-то вроде этого:

HTML

<body onLoad="CheckPageLoad();">

    <input type="hidden" name="visit" id="visit" value="" />

</body>

JS

function CheckPageLoad() {
    if (document.getElementById("visit").value == "") {
        // This is a fresh page load
        document.getElementById("visit").value = "1";
    }
    else {
        // This is a page refresh
    }
}​
Это может быть хорошо, если страница хранит состояние элементов управления в состоянии просмотра. Проблема в том, как обратиться к более сложной странице, которая вызывает обратную передачу. Если это простая страница, основанная на взаимодействии с пользователем, которая может затем поместить значение в это поле, то это отличное решение. Однако, если страница вызывает много обратных ссылок с большим количеством полей для заполнения пользователем, она становится не масштабируемой.
Хм, но значение всегда будет очищаться при обновлении. Таким образом, он никогда не сможет определить, было ли у поля ранее значение.
1
$(function () {
    if (performance.navigation.type == 1) {
        yourFunction();
    }
});

PerformanceNavigation объект, возвращенныйperformance.navigation

Это устарело. Это замена, но вы на самом деле не используете ни один из этих интерфейсов, как предполагалось.developer.mozilla.org/en-US/docs/Web/API/PerformanceNavigation

Похожие вопросы