5

私は History.js を使用して URL をプッシュしますが、IE ではページ名を追加します。

元の URL が 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 では、私の URL は次のようになります: http://www.mydomain.com/Home.aspx?id=2&pl=4

IE 8 では、私の URL は次のようになります: http://www.mydomain.com/Home.aspx#Home.aspx?id=2&pl=4

クロムに IE 8 の URL を貼り付けると、コードが失敗します...

第一に、正しい html 4 の URL はどのように見えるべきか、第二に、どのように修正すればよいでしょうか?

4

1 に答える 1

0

状態を適切にプッシュしていないと思います。プッシュする URL を再フォーマットしてみてください。History.pushState({data: 'home'}, null, '/Home/').

それとも、クエリで行ったように、状態をプッシュするとサーバーにリクエストが送信されると考えたことはありませんか? それは相棒ではありません。

したがって、プッシュした状態を他のブラウザに貼り付けることによって何かが機能するとは思わないでください。1 つ目は、他のブラウザーにはサイトに関する履歴がないためです。2 つ目は、履歴で 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 に答える