javascript - IE8上用什么方式来代替H5的history.replaceState?
高洛峰
高洛峰 2017-04-10 16:10:36
0
2
783

【问题再补充 - 题主】
刚在某宝上随便找了个商品页,切换商品颜色的那里,firefox下看到地址栏有变化,而且是修改的当前历史记录而不是追加;而IE8下历史记录也并没有什么变化,然而页面地址也没有变化。。
所以我在想,是不是不支持H5的浏览器实现不了history.replaceState这种功能。

【问题已修改 - 题主】
经答友及本人测试的结论:
history.js对/解析有bug(话说作者为毛不维护代码了,好像两年没有更新了)
那么咱就放弃history.js吧,专心研究下面两个问题:

  1. location.hash = '#a/b'是不是可以完全代替H5history.pushState?如果有区别,区别在哪里?

  2. 用什么方式可以代替H5history.replaceState

=================== 之前 ===================
这个history.js就是这个:
browserstate/history.js - GitHub

我也看了他的demo:
History.js - Demo - GitHub

然而我的问题,他并没有提及我的疑问:
比如,这是可以正常运行的方式:

History.replaceState(null, null, '#abc');

但这个时候,就直接蛋疼了:

History.replaceState(null, null, '#abc/aa');

#号会自动被去掉。。

跪求解决方式~

顺带一说,我之所以引用history.js是为了兼容ie8/9,这个其实不用说的哈。。

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

reply all(2)
阿神

结贴
对于不支持H5的浏览器:

  1. 用location.hash直接修改hash值的方式来代替pushState。

  2. 没找到可以用什么方式来代替history.replaceState。

黄舟

试过这个吗? https://github.com/devote/HTML5-History-API

Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template