【发布时间】:2015-09-04 12:52:00
【问题描述】:
我正在使用 window.history.replaceState() 来更改使用 file:///C:/... 访问的 HTML 文件的查询字符串...
这曾经在 Chrome、Internet Explorer 和 FireFox 中有效,但在 Chrome 中不再有效。不知道它什么时候停止工作。我有 Chrome 45.0.2454.85。它仍然适用于其他 2 个浏览器。
我得到:
未捕获的安全错误:无法在“历史记录”上执行“replaceState”: 带有 URL 的历史状态对象 'file:///C:/Users/Michael/Desktop/test.html?Q=NewQueryString' 不能 在原点为“null”的文档中创建。
抱歉,这在任何托管小提琴中都不起作用。您可以将代码复制到本地 HTML 文件中以自己查看:
<html>
<body>
<button onclick="clickme()">Click me</button>
<script>
function clickme() {
window.history.replaceState({ "html": undefined, "pageTitle": "NewTitle"}, "", "?Q=NewQueryString");
}
</script>
</body>
</html>
显然我可以将它托管在服务器上,但我试图保持简单。这是我们使用的由 Git 托管的简单 Scrum 板。它通过第 3 方 Web 服务获取数据。有关解决该错误的任何想法。
【问题讨论】:
-
什么版本,因为对我来说那是工作
-
Chrome 45.0.2454.85 不适合我。
-
这搞砸了。我在 Chrome 中将我所有的应用程序绘制为本地 HTML 文件。很遗憾,由于 jQuery Mobile 需要
replaceState(),这不再有效。