0

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

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

在 Mozilla 中它可以正常工作,但在 Chrome 中却不行。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

有人知道吗?

谢谢。

4

1 回答 1

1

你必须明白这也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
于 2012-06-19T12:24:27.973 回答