window.location.pathname Chrome vs Mozilla

时间:2012-06-19 12:08:54

标签: javascript browser

我想通过函数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

有人知道吗?

感谢。

1 个答案:

答案 0 :(得分:1)

您必须了解location.hash也包含#本身。根据规范,location.hash的其余部分是网址编码,但#不是。

我说“按规格”,因为Firefox与location.hash属性有bug

如果您想将location.pathname更改为包含值的哈希值,则必须先对#进行编码。

示例:

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

如果您不想包含哈希,请使用

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