2013-04-24 43 views
4

经历了history.js和this question的问题,它的后续答案只是为我创造了更多的问题。History.js和IE

问题1:

popstatestatechange听众似乎都通过pushState()popState()来触发,其中根据该回答者是由设计?

我只想听popstate事件,我知道我可以通过使用数据参数来检查,但是将数据和标题参数设置为任何不是null在IE8/9的散列中添加了一堆额外的东西,像这样:

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

我知道我可以创建一个额外的var来照顾,但我宁愿不。


问题2:

而且在IE8-9,你怎么删除哈希主页,现在如果我做

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

的URL原来一样这个:

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

如果我这样做:

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

的网址原来是这样的:

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

但我想的网址,以利用这些格式中的任何一个:我使用了jQuery插件历史

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

+0

History.js中没有popState功能。在场景后面,history.js会查询URL更改,如果URL更改发生,它将触发stateChange Even。 – NavaRajan 2013-04-29 05:08:45

回答

1

我不确定问题1的答案。

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

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

因此,HTML4浏览器被哈希URL阻塞。抱歉。