html 4浏览器(IE)中的History.js PushState错误地更改了url

html 4浏览器(IE)中的History.js PushState错误地更改了url,url,history.js,html4,Url,History.js,Html4,Im usnig History.js推送url,但在IE中,它会附加页面名称 如果我的原始url是: 然后我执行以下操作: var url=window.location.protocol+'/'+window.location.host+'/Home.aspx?id=2&pl=4'; History.pushState(null,null,url) 在Chrome中,我的url变成: 在IE 8中,我的url变成: 如果我在chrom中粘贴IE 8 url,我的代码将失败 首先,正确的ht

Im usnig History.js推送url,但在IE中,它会附加页面名称

如果我的原始url是:

然后我执行以下操作:

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

在Chrome中,我的url变成:

在IE 8中,我的url变成:

如果我在chrom中粘贴IE 8 url,我的代码将失败


首先,正确的html 4 url应该是什么样子,其次,我该如何修复它?

我认为您没有正确地推送一个状态,请尝试重新格式化您推送的url,例如
History.pushState({data:'home'},null,/home/')。

或者,您可能认为推动一个状态也会向服务器发送一个请求,就像您在那个里使用查询一样?它不适合巴迪

因此,不要期望通过将你推送的状态粘贴到其他浏览器中来实现任何功能。首先,因为其他浏览器没有您站点的历史记录,其次,您需要用历史记录捕获statechange事件

e、 g


statechange事件不是问题所在。这一切都有效。如果我按“/Home/”然后将该页添加到书签,然后重新加载该页,它将无法正常工作,因为asp.net希望在Home结尾处显示“.aspx”。。。我在Sharepoint网站上运行此操作。您的问题是#之后的所有内容都不会发送到服务器。所以mydomain.com/Home.aspx永远不会得到散列后的id和pl。您得到的是预期的,我在我们的客户端站点中使用,它的行为与您给出的方式相同,并且工作良好。带有哈希的URL在Chrome浏览器中也能正常工作。
History.Adapter.bind(window, 'statechange',
       function() {
         if (History.getState().data.page === 'home') {
           //do what u would like with current state
         }
     );