2012-12-22 52 views
2

我最近在頁面上實現了History.js,並且遇到了腳本問題。如果我進入索引頁面,點擊鏈接,就像他們應該那樣工作。新的內容被加載,不刷新頁面,所有導航鏈接仍然有效。但是,如果我在使用其中一個鏈接後刷新,然後單擊一個鏈接,則URL會更改,但不會有內容。我不確定發生了什麼事。在使用History.js進行刷新時沒有持久狀態

後退和前進按鈕正常工作,我可以在使用它們後訪問導航。下面是我使用的JavaScript:

function fire() 
{ 
var 
History = window.History, 
State = History.getState(); 

$('a').live('click', function(e) 
{ 
    e.preventDefault(); 
    var path = $(this).attr('href'); 
    var title = $(this).attr('title'); 
    History.pushState('ajax',title,path); 
} 
); 

// Bind to state change 
// When the statechange happens, load the appropriate url via ajax 
History.Adapter.bind(window,'statechange',function() 
    { 
     load_ajax_data(); 
    History.log(State.data, State.title, State.url); 
    } 
); 

function load_ajax_data() { 
State = History.getState(); 
$.post(State.url, function(data) { 
$("#content").load(State.url + ' #contentDiv'); 
    }); 
} 
} 

$(document).ready(fire()); 
+0

History.js的文檔說,它解決了瀏覽器問題:「狀態數據和標題在站點離開然後返回(包括頁面刷新)時不會持續」,這應該意味着我可以使用導航鏈接,刷新頁面,導航應該仍然工作。我不確定它爲什麼沒有。我將用我在JavaScript文件中使用的代碼更新我的問題。 – Kendra

+0

**這沒有被修復**,所以如果有人有任何想法,請分享! – Kendra

+0

你是否設法找到任何解決方案與刷新問題,因爲我的演示應用程序與history.js發生同樣的事情。請回復。謝謝 –

回答

1

我知道這是一個老問題,但我有同樣的問題,刷新頁面後,導航是行不通的,但你可以看到的網址鏈接。

固定剛剛更新到History.js的最新版本https://github.com/browserstate/history.js

這是我的代碼:

//Under Document.ready 
if (History.enabled) { 
     var History = window.History; 
      History.Adapter.bind(window, "popstate", function() { 
        var State = History.getState(); 
        History.log(State.data, State.title, State.url); 

        if (JSON.stringify(State.data) != "{}") { 
         var obj = State.data.content; 
         search = State.data.search; 
         $("#content").html(obj); 
         $("#search").val(search); 
        } 
      }); 
    } 

而且因爲我只是想推動Ajax請求的狀態:

//under .ajaxStop 
History = window.History; 
      if (History.enabled) { 
       var grid = $("#content").html(); 
       var search = $("#search").val(); 
       History.pushState({ content: grid, search: search }, "Search", "?" + $("#FormID").serialize()); 
      } 

其中#內容是我的局部視圖呈現的div和#searc h是一個文本框元素。

注意:我使用的是Histyori.js 1.7,更新到1.8後,所有的東西都開始工作。

我希望這可以對其他人有用。

相關問題