Рассмотрим это jsfiddle: http://fiddle.jshell.net/maple/JbEJN/show/ (это окно результатов, для работы replaceState, см. фактическая скрипка с кодом здесь: http://jsfiddle.net/maple/JbEJN/).
Это простой элемент управления вкладкой javascript. Я нажимаю «Tab 1» и вижу содержимое одного div. Я нажимаю «Tab 2», чтобы скрыть отображаемый div и показать другой, с другим содержанием. Вы получаете тренировку, стандартный контроль вкладок.
Теперь, что я делаю , хочу использовать хештеги, чтобы иметь возможность добавлять закладки или связывать страницу с определенной выбранной вкладкой. Чего я не хочу, так это создания записи истории браузера каждый раз, когда я переключаюсь между вкладками, чтобы при нажатии назад мне приходилось обходить 10 вкладок, прежде чем я действительно смогу вернуться на страницу, с которой пришел .
Я собираюсь реализовать это, используя replaceState (), когда я переключаюсь между вкладками, чтобы вставить хэш-тег в URL страницы, например:
window.history.replaceState(null, '', '#tabname');
Здесь я ожидаю, что при переключении между вкладками записи истории не создаются, поэтому, когда я переключаюсь несколько раз между вкладками, я вижу изменение хэш-метки, но когда я нажимаю кнопку возврата, я просто возвращаюсь к предыдущему. страница (или ничего не происходит, если я открыл тестовую страницу в новом окне).
Это прекрасно работает в Chrome, Firefox и Safari, но не в Opera 11.50 и 11.60. Насколько я знаю, Opera утверждает, что полностью поддерживает API истории в Opera, но в Opera происходит то, что replaceState () работает как pushState (), записи помещаются в историю.
Это ошибка в Opera, или я должен использовать API в Opera другим способом?