1

jquery.pjax.js をテストしていて、問題に気づきました。
私の最小限のテスト プロジェクトでは、以下のような奇妙な動作が発生します。

  1. fireflx の index.php へのアクセス
  2. pjax リンクをクリック: ロケーションバーとページの内容が変更されます
  3. Firefox の [戻る] ボタンをクリック: ロケーション バーは変更されますが、コンテンツは残ります

この動作は GoogleChrome では発生しません。
これを解決する方法を知りたいです。

私のテストプロジェクトは:
http://karasunouta.com/php_test/pjax/
http://karasunouta.com/files/pjax.zip

index.php

<?php
    $page = 1;
    if (isset($_GET['page'])) {
        $page = $_GET['page'];
    }

    $isPjax = false;
    if (!empty($_SERVER['HTTP_X_PJAX'])) {
        $isPjax = true;
    }

    if (!$isPjax):
?>
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title>page<?php echo $page; ?></title>
            <script type="text/javascript" src="js/jquery-1.9.1.min.js"></script>
            <script type="text/javascript" src="js/jquery.pjax.js"></script>
            <script type="text/javascript">
                $(function(){
                    // link
                    $(document).pjax('a.pjax', '#main');

                    // form
                    $(document).on('submit', 'form', function(event) {
                        $.pjax.submit(event, '#main')
                    })
                });
            </script>
        </head>
        <body>
            <h1>pjax test</h1>
            <ul class="links">
                <li><a href="?page=1" class="pjax">page1</a></li>
                <li><a href="?page=2" class="pjax">page2</a></li>
                <li><a href="?page=3" class="pjax">page3</a></li>
            </ul>
            <form>
                Page:&lt;input name="page" type="text" value="1">
                <input type="submit">
            </form>
            <div id="main" style="border: 3px double gray">
<?php endif; ?>
                <?php include("page/{$page}.html") ?>
<?php if (!$isPjax): ?>
            </div>
        </body>
    </html>
<?php endif; ?>

ページ/1.html

page1 contents

ページ/2.html

page2 contents

ページ/3.html

page3 contents

js/jquery-1.9.1.min.js
js/jquery.pjax.js

4

1 に答える 1

0

私は自分で解決策を見つけることができたかもしれません...

前:

$(function(){
    // apply pjax
});

後:

$(document).ready(function() {
    // apply pjax
});

これで、Firefox の [戻る] ボタンが正常に機能するようになりました。
理由についてはよくわかりません。
いくつかのテキストでは、2 つの書体の意味はまったく同じであると書かれていますが、実際の動作は異なっているように見えます...

于 2013-03-27T10:50:47.513 に答える