小编Mik*_*ike的帖子

历史记录replaceState不再在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>
Run Code Online (Sandbox Code Playgroud)

显然我可以在服务器上托管这个但是试图保持简单.这是我们使用Git托管的一个简单的Scrum板.它命中第三方Web服务以获取数据.有关解决错误的任何想法.

javascript google-chrome

7
推荐指数
1
解决办法
2911
查看次数

想要document.open创建一个新的历史元素,然后返回原始页面

我正在使用document.open()+ write()+ close()从客户端创建一个新页面.这有效,但它会用新页面替换当前的历史元素,因此当用户点击它们时,它们看不到它们刚刚打开的页面.例:

  1. 在主页
  2. 单击按钮导航到下面显示的页面.
  3. 单击该页面上的单击我按钮.
  4. 单击返回 - 这会将用户返回到我不想要的主页.

我已经尝试插入历史元素,history.pushState()但这也不起作用.它允许document.open页面有一个新的URL.单击返回将用户返回到我想要显示的页面的URL,但它仍然是"新页面".

完整的HTML页面代码如下.此类示例在小提琴中不起作用,但可以在本地进行测试.

<html>
<body>
<button onclick="clickme()">Click me</button>
<script>
function clickme() {
    history.pushState(null, null, "Results/");
    document.open("text/html");
    document.writeln("New Page");
    document.close();
}
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

注意:寻找具有跨浏览器支持的解决方案,包括可能稍微加强安全性的最新Chrome 45.

html javascript

5
推荐指数
1
解决办法
842
查看次数

标签 统计

javascript ×2

google-chrome ×1

html ×1