1

window.history.pushState は IE9 などの HTML 4 ブラウザーでは使用できないため、pushState の動作をシミュレートする jQuery ライブラリである history.js を探しました。

問題は、pushState を使用すると、URL の末尾が重複することです。

例えば、

History.pushState(null,null,window.location.pathname + '?page=1');

戻り値、

http://www.development.com/test.html#test.html?page=1

この問題を回避するにはどうすればよいですか? よろしくお願いします。

更新 (2012 年 1 月 22 日) 、報奨金の質問:

                if (pageNo == 1){
                    //window.history.pushState({"html":currURL,"pageTitle":''},"", window.location.pathname + '?page=1'); For chrome and FX only
                    //History.replaceState(null,null,'')
                    //History.pushState(null,null,'?issue=' + currPageIssueNo + '&page=1');
                }   
                else if (pageNo != 1 || pageNo == 1 && linkPageNo > 1  ) {
                    History.pushState(null,null,'?issue=' + currPageIssueNo + '&page=' + pageNo);
                    //window.history.pushState({"html":currURL,"pageTitle":''},"", newURL);   For chrome and FX only
                }

それが最初のページである場合、私はまだ問題に遭遇しています

http://localhost/development/flipV5.html?issue=20121220&page=1

IE9 の 2 ページ目に移動すると、次の URL があります。

http://localhost/development/flipV5.html?issue=20121220&page=1#flipV5.html?issue=20121220&page=2

私が達成したいのは

http://localhost/development/flipV5.html?issue=20121220&page=2

HTML4ブラウザで無理なら最低でも達成してください

http://localhost/development/flipV5.html/#?issue=20121220&page=2

親切に助けてくれてありがとう

4

4 に答える 4

3

あなたのコードはあなたが期待することを正確に実行します。

window.location.pathname + '?page=1'

場所のパス名(test.html)を出力し、追加します?page=1

削除するwindow.location.pathnameと機能するはずです。

于 2013-01-15T17:10:00.717 に答える
2

IEのクライアント側リダイレクトを設定する必要があります。ユーザーがこのページにアクセスしたと仮定します。

http://localhost/development/flipV5.html?issue=20121220&page=1

それらはに送られる必要があります

http://localhost/development/flipV5.html#?issue=20121220&page=1

その理由は、IE <= 9では、ユーザーを新しいページに移動せずに、ハッシュの前に何も変更できないためです。facebook.comこれは、実際に使用しているときにURLをに変更できないようにする古いセキュリティ機能ですspambook.com。最近、人々はそれがやり過ぎだと気づきました。

リダイレクトは次のようになります。

<!--[if LTE IE 9]>
<script type="text/javascript">
if (location.search) 
    location.href = location.pathname + "#" + location.search;
</script>
<![endif]-->

これで、状態をプッシュできるようになり、検索とハッシュの両方に表示されなくなります(それぞれとの後に?あり#ます)

于 2013-01-28T07:21:46.690 に答える
1

window.location.pathnameをから削除するだけですHistory.pushState

History.pushState(null,null,'?page=1');
于 2013-01-15T17:09:24.647 に答える
0

多分試してください:

History.replaceState(null,null,'?issue=' + currPageIssueNo + '&page=' + pageNo);
于 2013-01-24T08:06:25.713 に答える