4

history.js 和这个问题以及它的后续答案给我带来了更多问题。

问题1:

popstateandstatechange听众似乎都被 and 触发了,pushState()根据popState()那个回答者的说法,这是设计使然?

我只想监听 popstate 事件,我知道我可以使用 data 参数进行检查,但是将 data 和 title 参数设置为任何内容都不会null在 IE8/9 的哈希中添加一堆额外的东西,如下所示:

http://www.site.com/#about/?_suid=13383514298760299522541335484

我知道我可以创建一个额外的 var 来解决这个问题,但我不想这样做。


问题2:

同样在 IE8-9 中,如果我这样做,您现在如何删除主页的哈希

History.pushState(null, null, 'http://www.site.com');

网址原来是这样的:

http://www.site.com/#http%2A//www.site.com

如果我这样做:

History.pushState(null, null, '');
History.pushState(null, null, '/');

网址原来是这样的:

http://www.site.com/#./

但我希望 url 采用以下任何一种格式:

http://www.site.com
http://www.site.com/
http://www.site.com/#
http://www.site.com/#/

我正在使用 jQuery 历史插件。

4

1 回答 1

1

我不确定问题 #1 的答案。

但是,对于问题 2,该问题与 HTML5 浏览器与 HTML4 浏览器的功能有关。从文档中:

对于 HTML5 浏览器,这意味着您可以直接修改 URL,而无需再使用哈希。对于 HTML4 浏览器,它将恢复使用旧的 onhashchange 功能。

因此,HTML4 浏览器被哈希 URL 卡住了。对不起。

于 2013-12-23T04:52:18.867 回答