Перенаправление window.location работает, но исходный URL-адрес не отображается в истории браузера

Код ниже работает хорошо. Вот моя проблема: URL-адрес окна перенаправляется, но исходный URL-адрес не регистрируется в истории моего браузера.

Например, если я захожу на "http://example.com/page1", браузер перенаправляет на "http://example.com/test", как и должно быть. Однако мне нужно, чтобы исходный посещенный URL-адрес («http://example.com/page1») отображался в истории моего браузера, чтобы я мог вызывать его в другой функции.

Есть ли способ получить исходный посещенный URL-адрес для входа в историю моего браузера перед перенаправлением?

<!-- script to enable age verification cookies and ensure people have age checked -->
<script type="text/javascript">
    $(document).ready(function(){
       if (window.location =="http://example.com/home") {//do nothing
       } else {
           window.location = "http://example.com/test";
       }
    });
</script>

person user1546779    schedule 23.07.2012    source источник
comment
как насчет сохранения его в глобальной переменной перед изменением местоположения? Или вы можете window.open с целью _self или _top   -  person MrOBrian    schedule 24.07.2012
comment
Я мог бы передать его в хеше или строке запроса.   -  person Blazemonger    schedule 24.07.2012
comment
извините, но я немного любитель, когда дело доходит до jquery/javascript... как мне сохранить его как глобальную переменную или целевое окно. открыть как _self или _top? И будет ли использование одного из этих двух методов до перенаправления гарантировать, что исходный URL-адрес будет сохранен в истории браузера? большое спасибо за помощь новичку   -  person user1546779    schedule 24.07.2012
comment
@MrOBrian Я только что попробовал это, и это тоже не сработало. по какой-то причине он не загружает исходный URL-адрес в историю браузера... window.open('http://www.example.com/test','_self','', false);   -  person user1546779    schedule 24.07.2012
comment
Какой браузер вы пробуете? Я только что протестировал в Chrome и с помощью window.open оставил свою предыдущую страницу в истории. Согласно документации Microsoft, 4-й параметр — replace, поэтому, если он равен false, это должно добавить к истории в IE (по крайней мере, возможно, в других), а быстрый тест в Firefox также позволил мне вернуться после выполнения window.open   -  person MrOBrian    schedule 24.07.2012
comment
@MrOBrian Я проверил это в Chrome и Safari. Ни один из них не сохранил исходный URL-адрес в истории. Вот еще один взгляд на мой код ... вы заметили что-нибудь еще, что могло бы вызвать это? <script type="text/javascript"> $(document).ready(function(){ if (window.location =="http://example.com/") { } else { window.open('http://example.com/test','_self','', false); } }); </script>   -  person user1546779    schedule 24.07.2012
comment
Может быть проблема в том, как я называю историю? Вот моя другая функция (в форме): <form action="javascript: window.history.back();" method="get" name="age_form" id="ageForm" />   -  person user1546779    schedule 24.07.2012


Ответы (2)


Я думаю, что вам нужно window.location.href. Это добавит предыдущий URL-адрес в историю браузера.

person Silver Gonzales    schedule 24.07.2012
comment
Читая в другом месте, это звучало так, как будто установка window.location была по существу такой же, как установка window.location.href. Есть ли документально подтвержденная разница? - person Cincinnati Joe; 30.10.2013

Я сам сталкивался с таким поведением, и это было потому, что я загружал страницы в хром через файловую систему, то есть с использованием протокола file://. Я запустил HTTP-сервер и с его помощью сохранил историю.

person 1j01    schedule 11.09.2018