В чем разница между
window.location.href="http://example.com";
window.location.replace("http://example.com");
window.location.assign("http://example.com");
Я читал на многих форумах, что window.location.assign()
просто заменяет текущую историю сеанса, и, следовательно, кнопка возврата браузера не будет работать. Однако я не могу воспроизвести это.
function fnSetVariable() {
//window.location.href = "http://example.com";
window.location.replace("http://example.com");
//window.location.assign("http://example.com");
}
<a onmouseover="fnSetVariable();"
href="PageCachingByParam.aspx?id=12" >
CLICK
</a>
javascript
dom
location
milan_9211
источник
источник
Ответы:
Они делают то же самое:
Они просто переходят по новому URL-адресу. С
replace
другой стороны, метод переходит к URL-адресу, не добавляя новую запись в историю.Итак, то, что вы прочитали во многих формах, неверно.
assign
Метод действительно добавляет новую запись в истории.Ссылка: http://developer.mozilla.org/en/window.location
источник
assign()
? Из этого ответа и документов он звучит идентичноlocation = ...
.Часть о невозможности использования кнопки «Назад» - это распространенное неверное толкование. window.location.replace (URL) выбрасывает ОДНУ верхнюю запись из списка истории страниц, перезаписывая ее новой записью, поэтому пользователь не может легко вернуться на эту ОДНУ конкретную веб-страницу. Эта функция НЕ стирает весь список истории страниц и не делает кнопку «Назад» полностью нефункциональной.
(НИКАКАЯ функция или комбинация параметров, о которых я знаю, могут изменить или перезаписать записи списка истории, которые вам не принадлежат абсолютно наверняка - браузеры обычно применяют это ограничение безопасности, просто даже не определяя какую-либо операцию, которая может вообще повлиять на любую запись, кроме верхний один в списке истории страницы. Я с содроганием думаю , что сортирует из подлых вещей вредоносных может сделать , если существовала такая функция) .
Если вы действительно хотите сделать кнопку «Назад» нефункциональной (возможно, не «удобной для пользователя»: подумайте еще раз, если это действительно то, что вы хотите сделать), «откройте» новое окно. (Вы можете «открыть» всплывающее окно, у которого даже нет кнопки «Назад» ... но всплывающие окна в наши дни не очень популярны :-) Если вы хотите, чтобы ваша страница отображалась независимо от того, что делает пользователь ( опять же под вопросом "удобство для пользователя"), настройте обработчик window.onunload, который просто перезагружает вашу страницу заново, каждый раз с самого начала.
источник