【发布时间】:2012-01-10 16:46:15
【问题描述】:
考虑这个 jsfiddle:http://fiddle.jshell.net/maple/JbEJN/show/(这是结果窗口,为了让 replaceState 工作,请参阅 actual fiddle with code here: http://jsfiddle.net/maple/JbEJN/)。
这是一个简单的 javascript 选项卡控件。我单击“Tab 1”并查看一个 div 的内容。我单击“选项卡 2”以隐藏正在显示的 div 并显示另一个具有不同内容的 div。你得到钻,标准选项卡控件。
现在,我要做 想要的是使用主题标签来为页面添加书签或链接到选定的某个选项卡。我不想要的是每次在标签之间切换时创建一个浏览器历史记录条目,这样当我按下返回时,我必须在 10 个标签之间循环,然后才能真正返回到我来的页面来自。
我打算实现这一点的方式是,当我在选项卡之间切换以将主题标签插入页面的 url 时使用 replaceState(),如下所示:
window.history.replaceState(null, '', '#tabname');
我希望在这里发生的是,在选项卡之间切换时不会创建任何历史记录条目,所以当我在选项卡之间切换几次时,我会看到井号发生变化,但是当我点击后退按钮时,我只是回到上一个页面(如果我在新窗口中打开测试页面,则什么也不会发生)。
这适用于 Chrome、Firefox 和 Safari,但不适用于 Opera 11.50 和 11.60。据我所知,Opera 声称完全支持 Opera 中的历史 API,但在 Opera 中发生的情况是 replaceState() 的工作方式与 pushState() 类似,条目会被放入历史记录中。
这是 Opera 中的错误,还是我应该在 Opera 中以其他方式使用 API?
【问题讨论】:
标签: javascript opera browser-history