То, что предлагает @Prutswonder, - это единственный способ предпринять действия ДО того, как страница будет выгружена. Новая страница не может быть загружена до того, как старая страница будет выгружена. Это наиболее распространенное / прямолинейное решение.
Если вам нужно загрузить новую страницу, пока вы еще находитесь на текущей странице, вы можете использовать frames / iframes.
Возьмите страницу с 2 кадрами друг на друге.
Страница имеет контроль над 2 внутренними фреймами => внутренний фрейм может уведомить страницу, которая была полностью загружена. (в событии onLoad) И если он загружен, страница может поместить этот iFrame поверх.
Страница может прервать загрузку, если пользователь решит. Оставляя загрузочный iFrame на дне.