Запретить обновление браузера Fire FoxJavascript

Форум по Javascript
Anonymous
Запретить обновление браузера Fire Fox

Сообщение Anonymous »

Я создаю приложение React + Vite, и у меня есть сценарий, в котором процесс выполняется. Когда я нажимаю кнопку «Обновить браузер», появляется диалоговое окно подтверждения браузера по умолчанию. Я написал специальный крючок, который предотвращает обратную навигацию браузера и отображает модальное окно с предупреждением. Однако при обновлении диалоговое окно браузера по умолчанию все равно появляется.
Вот я написал:

Код: Выделить всё

import { useEffect } from "react"
import { useBlocker } from "react-router-dom"

const useBrowserActions = (props: TProps) =\> {
const { getBlock, onBlockedState, showWaring } = props
const { state, proceed, reset } = useBlocker(({ currentLocation, nextLocation }) =\>
getBlock(currentLocation?.pathname, nextLocation?.pathname)
)

useEffect(() => {
if (state === "blocked") onBlockedState()
}, [state])

useEffect(() => {
const handleBeforeUnload = (e: BeforeUnloadEvent) => {
if (!showWaring) return
e.preventDefault()
e.returnValue = ""
return ""
}

window.addEventListener("beforeunload", handleBeforeUnload)
return () => window.removeEventListener("beforeunload", handleBeforeUnload)
}, [showWaring])

return { proceed, reset, state }

}

export default useBrowserActions

type TProps = {
getBlock: (currentLocation: string, nextLocation: string) =\> boolean
onBlockedState: () =\> void | Promise\
showWaring?: boolean
}
Это отлично работает в Chrome и Edge. В Firefox обратная обработка браузера работает, и при обновлении отображается диалоговое окно по умолчанию. Однако, если я снова нажму «Обновить», страница немедленно перезагрузится без отображения диалогового окна. Такого поведения нет в Chrome или Edge.
Если кто-то сталкивался с этой проблемой в Firefox и знает решение, помогите!

Подробнее здесь: https://stackoverflow.com/questions/797 ... er-refresh

Вернуться в «Javascript»