在HTML 4浏览器(IE)中的History.js PushState错误地更改了URL

时间:2013-09-06 08:53:16

标签: url history.js html4

我使用History.js来推送网址,但在IE中它附加了网页名称。

如果我原来的网址是: http://www.mydomain.com/Home.aspx

然后执行以下命令:

var url = window.location.protocol +'//'+ window.location.host +'/ Home.aspx?id = 2& pl = 4'; History.pushState(null,null,url)

在Chrome中,我的网址变为:http://www.mydomain.com/Home.aspx?id=2&pl=4

在IE 8中,我的网址变为:http://www.mydomain.com/Home.aspx#Home.aspx?id=2&pl=4

如果我将IE 8 url粘贴到chrom中我的代码失败了......

首先,正确的html 4网址应该是什么样的,其次,我该如何解决?

1 个答案:

答案 0 :(得分:0)

我相信你没有正确地推动一个州,尝试重新格式化你推动的网址,例如History.pushState({data: 'home'}, null, '/Home/').

或许您认为推送状态也会向您发送一个请求,就像您在那里查询一样?它没有好友。

因此,不要指望通过粘贴你推入其他浏览器的状态来工作。首先,因为其他浏览器没有关于您网站的历史记录,其次您需要使用历史记录捕获statechange事件。

e.g。

History.Adapter.bind(window, 'statechange',
       function() {
         if (History.getState().data.page === 'home') {
           //do what u would like with current state
         }
     );