PJAX和Firefox后退按钮问题

PJAX and Firefox back button issue

本文关键字:按钮 问题 Firefox PJAX      更新时间:2023-09-26

我正在测试jquery.pjax.js并注意到一个问题。
在我的最小测试项目中,发生了如下奇怪的行为:

  1. 在firefox中访问index.php
  2. 点击pjax链接:位置栏和页面内容被改变
  3. 点击Firefox的后退按钮:位置栏改变了,但内容保持不变

此行为不会在googlchrome中发生。
我想知道如何解决这个问题。

我的测试项目是:
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:<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

我本可以自己找到解决办法的…

:

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

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

现在firefox后退按钮看起来工作正常。
我不确定原因。
他们的实际行为看起来不同,尽管一些文本说这两种书写形式的含义完全相同…