0

Как узнать, нажата ли кнопка обновления или кнопка "Назад" в браузере Firefox?

2

Описание проблемы:

Я сталкиваюсь с проблемой в 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 ответ(ов)

0

Используйте 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.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь