History.js和IE

时间:2013-04-24 21:55:01

标签: jquery internet-explorer history.js

遇到history.js和this question时遇到问题以及随后的回答只为我创造了更多问题。

问题1:

popstatestatechange听众似乎都是由pushState()popState()触发的,根据该回答者的说法是设计的吗?

我只想听popstate事件,我知道我可以使用data参数进行检查,但是将数据和标题参数设置为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/#./

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

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

我正在使用jQuery历史插件。

1 个答案:

答案 0 :(得分:1)

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

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

  

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

因此,HTML4浏览器坚持使用哈希网址。遗憾。