window.location.pathname Chrome vs Mozilla

window.location.pathname Chrome vs Mozilla

本文关键字:vs Mozilla Chrome pathname location window      更新时间:2023-09-26

我想通过函数 window.location.pathname 更改路径名。我有这个源代码。

var hash = window.location.hash;
window.location.pathname = hash;

在Mozilla中它工作正常,但在Chrome中则不然。铬给我写这个地址。

/%23!stranka=novinky&cisloStranky=1&rubrika=novinky&clanek=783?stranka=

kontakty#!stranka=novinky&cisloStranky=1&rubrika=novinky&clanek=783

哈希值#!stranka=novinky&cisloStranky=1&rubrika=novinky&clanek=783

有人知道吗?

谢谢。

你必须

明白,location.hash也包括#本身。根据规范,其余的location.hash是 URL 编码的,但#不是。

我说"按规范",因为 Firefox 有一个与 location.hash 属性相关的错误。

如果要将location.pathname更改为包含值的哈希,则必须在执行此操作之前对#进行编码。

例:

var hash=location.hash.substring(1)
location.pathname='%23'+hash

如果您不希望包含哈希,只需使用

var hash=location.hash.substring(1)
location.pathname=hash