Есть ли способ выполнить код непосредственно перед обновлением страницы?

#javascript #jquery #html #node.js #url

#javascript #jquery #HTML #node.js #url

Вопрос:

Я пытался сделать это с помощью функции onbeforeunload, но это просто

не делает то, что я хочу.

Итак, у меня есть веб-страница, которая добавляет текст к своему URL для выполнения некоторых действий:

 https://localhost:3000/someTextAppended
  

Но когда я обновляю, либо нажав в браузере «обновить кнопку», либо нажав

«F5», я не хочу обновлять новый URL (с добавленным текстом), я просто хочу

в этом случае обновите доменную часть:

 https://localhost:3000
  

Я пробовал с этим кодом и некоторыми вариантами:

 $(window).bind('beforeunload', function(){
  window.history.pushState("data","Title","");
});
  

Но он продолжает обновлять добавленный URL, а затем я получаю .

 Cannot GET /someTextAppended
  

Есть ли другой способ добиться этого?

Заранее спасибо 😉

Комментарии:

1. Это звучит как проблема X / Y — чего вы пытаетесь достичь

2. не используйте pushState для установки недопустимых URL-адресов; все, что связано с правильной динамической историей, также должно быть отражено в интерфейсе URL сервера. Это событие onunload, которое срабатывает в нужное время, но опять же, вам следует избегать такого антишаблона, как временные URL-адреса только для клиента; в них нет никакого смысла.

Ответ №1:

Есть очень мало вещей, которые вы можете сделать в onbeforeunload . Отправка пользователя куда-либо еще не входит в их число.

Итак, у меня есть веб-страница, которая добавляет текст к своему URL для выполнения некоторых действий

URL-адрес должен указывать на то, где пользователь находится на вашем сайте или в приложении. Он не должен «делать что-то».

Что вам, вероятно, следует делать, так это сохранять состояние в localStorage и обновлять URL при загрузке страницы, если состояние, представленное в URL, недопустимо.

Я бы дал вам конкретный совет, но вы не задали конкретного вопроса.

Ответ №2:

У вас это может не сработать, но вы могли бы использовать location.hash ( https://localhost:3000/#someTextAppended ).

В качестве альтернативы настройте свой веб-сервер для обслуживания / запроса GET /someTextAppended .