Я знаю, как использовать window.location. Проблема в том, что (по крайней мере, в FF) он стирает страницу, на которой вы находитесь, из истории. например, я на странице A, я перехожу к B, а window.location используется для отправки меня на C. Если на странице C я нажимаю назад, я оказываюсь на A, а не на B.
Есть ли другой способ перейти на другую страницу, не стирая текущую страницу из истории?
РЕДАКТИРОВАТЬ: этого не произойдет, если вы запустите код в Firebug.
Вот очень простая страница (да, я знаю, что код уродлив, это не настоящий код), которая показывает проблему:
<html>
<head><script type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.min.js"> </script>
<body>
<div class="foo"></div>
<a href="javascript:$('.foo').html('<scri'+'pt type="text/javascript">window.location = "c.html"</s'+'cript>');">b</a>
РЕДАКТИРОВАТЬ2: jQuery - это проблема, а setTimeout
- это ответ. Я добавил свое решение ниже на тот случай, если кто-то еще столкнется с этим странным граничным случаем.
EDIT3: этот пример упрощен, чтобы его было легче тестировать. В реальном случае обработчик кликов делает вызов Ajax, который возвращает HTML, поэтому мы не можем упростить все, просто написав window.location = what. Код поступает с сервера, встроенный в HTML.
window.location = url
илиwindow.location.replace(url)
- person Patrick McElhaney   schedule 24.02.2010