Вариант использования такой: я хочу провести модульный тест (в браузере, QUnit или что-то в этом роде) кода, запускаемого на странице. Одна из вещей, которую может сделать страница, это перейти на другую страницу. У меня проблема с перехватом этого события, потому что:
- beforeunload не может остановить действие (поэтому первая навигация прервала мой тест)
- Попытка переопределить window.location или window.location.href с получателем, возвращающим старое значение, и установщик шпионажа также запрещен
Я понимаю, что есть причины безопасности, которые запрещают прекратить навигацию, но для разработки действительно полезно сделать это.
Есть ли возможность сделать это (у меня нет прямого контроля над бегуном, поэтому я не могу просто загрузить код в iframe и позволить ему перемещаться, а затем исследовать местоположение iframe)?
РЕДАКТИРОВАТЬ: чтобы быть немного более конкретным: я хочу проверить, есть ли на основе кнопка входа в систему (скажем, $('#login-btn')
), которая, нажимая, перемещает страницу в диалоговое окно Facebook oauth, серверный поток (детали здесь не важны).
Так что я хотел бы иметь возможность делать такие вещи:
// set up fb mock to not be connected
fbAsyncInit(); // simulate the startup of app
$('#login-btn').click();
equal(document.location.href, "http://www.facebook.com/oauth/...", "OAuth dialog not started.");
но если конечно, без реальной навигации. Как сделать тест?