Я хочу, чтобы иметь возможность изменять адрес страницы, но не вызывать никаких HTTP-запросов при внесении этих изменений. Как это можно сделать с помощью JavaScript?Как изменить местоположение страницы, а не перенаправить пользователя?
ответ
Вы имеете в виду, что я посещаю http://www.fakebank.example
, и вы хотите, чтобы адресная строка отображала http://www.yourbank.example
? Я думаю, что есть очевидные причины, по которым это невозможно.
Вы можете установить location.hash без загрузки страницы, но я не уверен, что это то, что вы хотите - ваш вопрос довольно расплывчатый.
Предполагая, что вы имеете в виду адрес, указанный в адресной строке браузера, я не верю, что это возможно. Насколько я знаю, установка document.location или window.location автоматически приведет к перезагрузке страницы.
Как сказал olliej, вы можете изменить хэш-параметр (идентификатор фрагмента a.k.a.), который не вызывает перезагрузку страницы.
Это может предоставить дополнительную информацию:
Не хотите добавить запись в историю? Просто используйте location.replace(..)
.
Чтобы ответить на ваш вопрос напрямую: это невозможно. Вы спрашиваете, как вы можете перейти на другую страницу, не перейдя на другую страницу, что бессмысленно.
Хотя, если страница уже находится в кеше браузера (и дана далекая дата в будущем), тогда технически пользователь может перейти на эту страницу, не запрашивая ее снова с вашего сервера. Но вы ничего не можете гарантировать.
Я думаю, что вы, возможно, ищете, это что-то вроде использования фреймов. На странице example.com/index.html
вы можете установить полноразмерный фрейм и включить другую страницу, такую как example.com/page2.html
. Тогда любые ссылки внутри фрейма не изменят URL-адрес, указанный в браузере. См. this tutorial для информации.
Не совсем. Я спрашиваю, как заставить DOM полагать, что он находится в одном месте, когда он вообще не находится в этом месте. Я не хочу, чтобы страница шла куда угодно. – 2009-10-19 14:37:11
Я не понимаю, почему вы хотите это сделать? – DisgruntledGoat
То, о чем вы просите, называется URL spoofing.
Any browser allowing this имеет серьезную проблему безопасности.
Да, слава Богу, это невозможно. – ceejayoz