Задать вопрос

JS: Функциональность window.location.replace() для Opera?

Во всех броузерах, кроме оперы, window.location.replace() отлично заменяет url без внесения записи в историю броузера (в моём случае нужно менять хеш, например "#1").

Если ли какой-то способ менять урл в опере без внесения записи в историю броузера?


Суть в том, что есть галерея изображений, при переходе между изображениями меняется хеш (что бы можно было дать кому-то ссылку, и человек попал на ту же картинку, которая была открыта при копирование адреса). Если посетитель побродит по галереи и нажмёт «back», то во всех броузерах, кроме оперы, он попадёт на предыдущюю страницу, а в опера на эту же страницу с предыдущем изображением. Как этого избежать?
  • Вопрос задан
  • 6815 просмотров
Подписаться 3 Оценить Комментировать
Решения вопроса 1
Да, в опере window.location.replace метод работает не так как надо. Если мы изменяем урл с перезагрузкой страницы, то все хорошо. К примеру:
visit site1.com
go site2.com
javascript: window.location.replace('?q=1')
go back // пользователь на site1.com


А вот с хэшем тоже нужен был такой номер, но никакого решения так и не нашел, кроме как через одно место:
  • делаем url hash polling(200мс)
  • фиксируем переход по картинкам в галереи
  • если заметили что урл изменился на предыдущий и при этом мы не зафиксировали это изменение, значит юзер нажал кнопку назад в браузере
  • вызываем метод history.go(-N), где N количество переходов по картинкам в галереи + 1, таким образом пользователь окажется на нужной нам странице.

Но я быстро отказался от этого решении, остановившись на поллинге и просто показывая предыдущую картинку. Этим самым мы сохраняем более удобную навигацию по галерее.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы