Могу ли я отменить location.href в JavaScript - PullRequest
3 голосов
/ 19 марта 2010

Звучит глупо, но мне нужна эта функциональность.

Могу ли я как-то отменить location.href = 'url' в javascript после его выполнения?

например, по нажатию кнопки я изменяю текущую страницу с какой-то ресурсоемкой страницей, я хочу дать возможность пользователю отменить ее, если загрузка следующей страницы займет много времени.

Спасибо и С уважением

Ответы [ 2 ]

4 голосов
/ 19 марта 2010

Да, вы можете. Вы можете использовать событие beforeunload для отображения предупреждения, которое пользователь может подтвердить или отменить. Когда пользователь отменяет его, навигация по страницам отменяется.

Пример:

window.addEventListener('beforeunload', (event) => {
  // Cancel the event as stated by the standard.
  event.preventDefault();
  // Chrome requires returnValue to be set.
  event.returnValue = '';
});

Обратите внимание, что не все браузеры реализуют это одинаково, и Chrome требует, чтобы вы установили свойство returnValue для события, чтобы вызвать оповещение, даже если спецификация HTML говорит, что вы должны вызвать event.preventDefault(), чтобы вызвать его.

1 голос
/ 20 ноября 2014

То, что предлагает @Prutswonder, - это единственный способ предпринять действия ДО того, как страница будет выгружена. Новая страница не может быть загружена до того, как старая страница будет выгружена. Это наиболее распространенное / прямолинейное решение.

Если вам нужно загрузить новую страницу, пока вы еще находитесь на текущей странице, вы можете использовать frames / iframes.

Возьмите страницу с 2 кадрами друг на друге.

Страница имеет контроль над 2 внутренними фреймами => внутренний фрейм может уведомить страницу, которая была полностью загружена. (в событии onLoad) И если он загружен, страница может поместить этот iFrame поверх.

Страница может прервать загрузку, если пользователь решит. Оставляя загрузочный iFrame на дне.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...