JS: Функциональность window.location.replace() для Opera?
Во всех броузерах, кроме оперы, window.location.replace() отлично заменяет url без внесения записи в историю броузера (в моём случае нужно менять хеш, например "#1").
Если ли какой-то способ менять урл в опере без внесения записи в историю броузера?
Суть в том, что есть галерея изображений, при переходе между изображениями меняется хеш (что бы можно было дать кому-то ссылку, и человек попал на ту же картинку, которая была открыта при копирование адреса). Если посетитель побродит по галереи и нажмёт «back», то во всех броузерах, кроме оперы, он попадёт на предыдущюю страницу, а в опера на эту же страницу с предыдущем изображением. Как этого избежать?
Да, в опере 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, таким образом пользователь окажется на нужной нам странице.
Но я быстро отказался от этого решении, остановившись на поллинге и просто показывая предыдущую картинку. Этим самым мы сохраняем более удобную навигацию по галерее.