Запретить обновление браузера 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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