历史记录replaceState不再在Chrome中用于本地文件

时间:2015-09-04 12:52:00

标签: javascript google-chrome

我正在使用window.history.replaceState()来更改使用file:/// C:/ ...

访问的HTML文件的查询字符串

此版本曾用于Chrome,Internet Explorer和FireFox,但不再适用于Chrome。不确定它何时停止工作。我有Chrome 45.0.2454.85。它仍可在其他2个浏览器中使用。

我得到了:

  

Uncaught SecurityError:无法在'History'上执行'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板。它命中第三方Web服务以获取数据。有关解决错误的任何想法。

2 个答案:

答案 0 :(得分:4)

它停止使用Chrome 45。 在这里,我填写了有关code.google的问题: https://code.google.com/p/chromium/issues/detail?id=529313

如果您只需要在自己的计算机上运行它,那么设置--allow-file-access-from-files是一个很好的解决方案。

答案 1 :(得分:3)

我遇到了同样的问题。作为一种解决方法,我使用--allow-file-access-from-files标志启动了Chrome。

但是认为这不是最佳解决方案。

以下是我正在运行的示例:

“C:\ Program Files(x86)\ Google \ Chrome \ Application \ chrome.exe”--app = file:///C:/APP/index.html --allow-file-access-from-文件

如果有人找到更好的解决方案,请告诉我们。