Как узнать, нажата ли кнопка обновления или кнопка "Назад" в браузере Firefox?
Описание проблемы:
Я сталкиваюсь с проблемой в Firefox, когда нужно определить, была ли нажата кнопка "Обновить" или кнопка "Назад" в браузере. Для обоих событий я использую метод onbeforeunload()
.
В Internet Explorer я обрабатываю это следующим образом:
function CallbackFunction(event) {
if (window.event) {
if (window.event.clientX < 40 && window.event.clientY < 0) {
alert("Кнопка 'Назад' нажата");
} else {
alert("Кнопка 'Обновить' нажата");
}
} else {
// Мне нужно какое-то условие здесь, чтобы я мог различить,
// была ли нажата кнопка 'Обновить' или 'Назад'.
}
}
<body onbeforeunload="CallbackFunction();">
Но в Firefox значения event.clientX
и event.clientY
всегда равны 0. Есть ли другой способ определить, какая кнопка была нажата?
1 ответ(ов)
Используйте event.currentTarget.performance.navigation.type
для определения типа навигации. Этот метод работает в Internet Explorer, Firefox и Chrome.
Вот пример кода:
function CallbackFunction(event) {
if (window.event) {
// Проверка нажатия кнопки "Назад"
if (window.event.clientX < 40 && window.event.clientY < 0) {
alert("Нажата кнопка 'Назад'");
} else {
// Предполагаем, что это обновление страницы
alert("Нажата кнопка 'Обновить'");
}
} else {
// Используем свойство performance.navigation.type для определения типа навигации
if (event.currentTarget.performance.navigation.type == 2) {
alert("Нажата кнопка 'Назад'");
}
if (event.currentTarget.performance.navigation.type == 1) {
alert("Нажата кнопка 'Обновить'");
}
}
}
В этом коде проверяется, произошло ли нажатие кнопки "Назад" или "Обновить" в зависимости от типа навигации. Если вы используете Internet Explorer, мы проверяем координаты курсора для определения действия. В современных браузерах используйте свойства performance.navigation
.
Какое наибольшее целочисленное значение в JavaScript, при котором не теряется точность?
Остановить вызов setInterval в JavaScript
Преимущества addEventListener по сравнению с onclick
Подождите 5 секунд перед выполнением следующей строки
Как определить, что окно браузера в данный момент не активно?