Как перехватить перезагрузку страницы средствами JavaScript во Vue.js 3?
Всем доброго времени суток, у меня такой вопрос - как перехватить попытку обновить страницу через F5/кнопку браузера?
Разрабатываю pet-проект на Vue.js 3 и было бы не плохо обновлять не всю страницу целиком, а отправлять соответствующее сообщение через уже открытое WebSocket соединение и получив массив объектов, обновлять соответствующие элементы.
Никак. Пользователь сам решает, что ему делать.
Ты можешь только запилить большую красивую кнопку "Обновить", чтоб ему захотелось нажать на неё, а не на стандартную.:)
maytilex, теперь когда ты это принял, я могу добавить, что если очень захотеть - можно перехватить конкретно событие keydown на document для F5, отменить по event.preventDefault() и таки запускать что-то своё. Однако нажатие кнопки в интерфейсе это конечно не отменит, и страница для этого должна быть в фокусе.:)
Aetae, Да, Вы правы, есть такая возможность для JavaSctipt, думаю реализовать вывод оповещения пользователю о том, что он может обновить конкретные блоки самостоятельно, не перезагружая страницы и у каждого подобного блока выводить кнопку, предоставляя ту самую возможность для быстрого обновления
alexalexes, с его использованием можно остановить перезагрузку само собой, но только вызвав стандартное раздражающее окошко, тихо отменить не получится. Такое окошко имеет смысл при не сохранённых данных, но при простом обновлении так делать точно не стоит.
alexalexes, ты можешь перехватить нажатие ф5 (но я просто напомню, что обновить можно и через ктрл+р, и через контекстное меню) или по другим косвенным признакам определить, что была перезагрузка, и уже ПОСЛЕ неё оповестить пользователя о возможности псевдо-рефреша.
Но, честно говоря, недумаю, что кто-то будет действительно пользоваться данной возможностью банально потому, что привычные способы рефреша уже на рефлексах.