HTML5历史记录与表单提交相结合

时间:2017-06-08 07:37:58

标签: javascript jquery html5 browser-history html5-history

我对历史功能有疑问。我遇到的问题是每当我导航到另一个页面时,历史就会被删除。这导致originalEvent.state的值为null,而不是州ID。

让我用一些代码解释自己:

 function SetStateId(stateId, addState) {
     $("#stateId").val(stateId);
     data = { stateid: stateId };
     if (addState)
    {
        console.log("History added. StateId: " + stateId);
        history.pushState(data, "StateId: " + stateId, window.location);
    }
    else {
        console.log("History replaced. StateId: " + stateId);
        history.replaceState(data, "StateId: " + stateId, window.location);
    }
 }



 function setupPopState() {
     console.log("setupPopState ");

     $(window).bind('popstate', function (event)
     {
         PopStateEvent(event);
     });   
 }

和我的HTML看起来像这样:

的index.html

<input type="hidden" name="stateId" id="stateId" value="1">
<script>SetStateId(1, true,"");setupPopState();</script>

<a href="page2.html">Page 2</a>

page2.html

<script>
    function callHistory(){
        SetStateId(2, true,""); 
        setupPopState();            
    }

</script>
<input type="hidden" name="stateId" id="stateId" value="2">
<script>callHistory();</script>

每当加载索引页时,都会调用SetStateId函数,并将stateID添加到值为1的历史记录中。然后自动转到setupPopState()事件,将popstate事件绑定到窗口。查看事件的内容,我看到在这种情况下originalEvent.state包含一个对象。

现在,当我按下超链接时,我会导航到我的page2.html。历史是用一个新的状态推动的:2。现在是棘手的部分。当我想返回并按下后退按钮时,popstate绑定中的事件得到以下数据:orginalEvent.state = null;当页面重新加载时(在我的情况下导航到不同的页面),看起来历史记录已被删除。

有谁知道为什么?

0 个答案:

没有答案