Как это реализовать на JS?

231
12 декабря 2016, 10:06

Задача такая - мне нужно отображать "/ne/sponsors", когда пользователь находиться на странице "/ne/browse-pages". Не делая при этом настоящий редирект, просто заменить URL. Как это реализовать на JS?

Answer 1

Легко - юзай Силу HTML5, Лук, а через AJAX подгружай нужную тебе страницу и отображай в body (или другом раппере, смотря как у тебя устроены страницы).

Answer 2

Обычно такая задача решается на бэкенде.

Answer 3

Тут, как уже было сказано, можно решить проблему довольно изящно на бэкэнде, либо же создавая велосипед с костылями в колёсах на JS. Второй способ действительно нельзя назвать изящным, т.к вам придется отслеживать URL, а, следовательно, придется добавлять скрипт на каждую страницу сайта, что, опять же, без бэкэнда весьма костыльно.

Правда все упрощает тот факт, что вам требуется отслеживать только один единственный URL. Что ж, в таком случае задача становится весьма простой - вполне можно будет обойтись и без копания в серверной части. Но вот проблемы возникнут тогда, если вдруг вам потребуется в будущем отслеживать больше, чем 1 адрес.

Answer 4

Смотри в сторону popstate и hashchange event. Перехватывай события и делай что тебе надо.

Таким образом работает Backbone.Router

Можешь заглянуть в его исходники, там все довольно просто. Можешь свой объект Router сделать и он будет контролировать твой URL.

READ ALSO
Как можно получить содержимое div в asp.net web forms

Как можно получить содержимое div в asp.net web forms

Здравствуйте,подскажите, пожалуйста, можно ли сразу в переменную считать содержимое div? например в jquery есть методhtml() есть ли что то похоже...

229
Ошибка в консоли из-за history.js

Ошибка в консоли из-за history.js

У меня есть сайт, серфинг страниц реализован через historyjs, в консоли постоянно висит такое сообщение:

207
Подскажите как правильно обрабатывать JSON данные в jquery

Подскажите как правильно обрабатывать JSON данные в jquery

Впервые столкнулся с обработкой json данныхНашел простой пример и вроде бы разобрался

222