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

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

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


Суть в том, что есть галерея изображений, при переходе между изображениями меняется хеш (что бы можно было дать кому-то ссылку, и человек попал на ту же картинку, которая была открыта при копирование адреса). Если посетитель побродит по галереи и нажмёт «back», то во всех броузерах, кроме оперы, он попадёт на предыдущюю страницу, а в опера на эту же страницу с предыдущем изображением. Как этого избежать?
  • Вопрос задан
  • 6809 просмотров
Решения вопроса 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, таким образом пользователь окажется на нужной нам странице.

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

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

Войти через центр авторизации
Похожие вопросы