5

我用 History.js 推送一个 url,但在 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 url​​ 应该是什么样子,其次,我该如何解决?

4

1 回答 1

0

我相信您没有正确推送状态,请尝试重新格式化您推送的网址,例如History.pushState({data: 'home'}, null, '/Home/').

或者,也许您认为推送状态也会像您在查询中那样向服务器发送请求?它没有哥们。

因此,不要期望通过将您推送到其他浏览器的状态粘贴到其他浏览器中来进行任何操作。首先,因为其他浏览器没有关于您网站的历史记录,其次您需要使用 History 捕获 statechange 事件。

例如

History.Adapter.bind(window, 'statechange',
       function() {
         if (History.getState().data.page === 'home') {
           //do what u would like with current state
         }
     );
于 2013-09-09T04:24:03.023 回答