我想通过函数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
有人知道吗?
感谢。
答案 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