我正在使用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服务以获取数据。有关解决错误的任何想法。
答案 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-文件
如果有人找到更好的解决方案,请告诉我们。