gpt4 book ai didi

javascript - 如何在 IE (>10) 和 Edge 中推送浏览器的历史记录?

转载 作者:行者123 更新时间:2023-11-29 23:55:04 27 4
gpt4 key购买 nike

使用 window.history.pushState 可以将状态推送到浏览器的历史记录中。

例子:

<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<input type="button" value="foo" onclick="setHistory('foo');">
<input type="button" value="bar" onclick="setHistory('bar');">
<script>
function setHistory(string) {
document.title = string;
window.history.pushState(
'object or string',
'',
string+'.html'
);
}
</script>
</body>
</html>

单击 foo 和 bar 按钮后,响应的条目将出现在浏览器的历史记录中。这适用于 Firefox、Chrome 和 Safari。然而,在 IE (>10) 和 Edge 中却没有,尽管它们正式支持它。有办法实现吗?

答案在 Does Internet Explorer support pushState and replaceState?没有用,因为它们只解释了不支持 pushState 的 IE<10 的问题。

编辑

除了不更新历史之外,pushState 似乎在 IE 和 Edge 中工作正常,即更新 URL,可以来回导航,“来回下拉列表”相应地更新.

编辑2

我刚刚读了https://msdn.microsoft.com/en-us/library/ms535864(v=vs.85).aspx .在“备注”下声明

“出于安全原因,历史对象不会在浏览器历史记录中公开实际的 URL。”

那么也许 IE 和 Edge 不支持我所追求的 pushState 部分?

最佳答案

IE10及以上支持pushStatereplaceState并且您的示例代码适用于两者。

但是,您可能会触发兼容模式并使用较低版本的 IE 进行渲染。 (再次,您的示例代码这样做并使用不支持历史 api 的 IE7 呈现)

Compatibility mode

您可以通过按 F12 调出开发人员工具并查看黑条右侧列出的 IE 版本来进行检查。

要阻止它这样做,请将其添加到您的 <head> :

<meta http-equiv="X-UA-Compatible" content="IE=edge" />

enter image description here

关于javascript - 如何在 IE (>10) 和 Edge 中推送浏览器的历史记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41896100/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com