2013-08-23 118 views
0

我不知道爲什麼這不起作用,我一直在嘗試一切。讓history.js在沒有Ajax加載頁面的情況下工作

大多數在線教程都使用Ajax,我不是,我嘗試過適應它,但我無法獲得任何工作。我正在使用的是bang網址,所有的內容都被加載到索引頁面中,它只是被動態地顯示和隱藏。我真的可以用一些幫助讓歷史工作。

這裏是我的腳本...

History.Adapter.bind(window, 'statechange', handleStateChange); 
$('nav a').on('click',function(e) { 
    var target = $(this).attr('href'); 

    History.pushState(null, null, target); 
}); 

function handleStateChange() { 
    alert("State changed..."); 
} 

如果我能得到警報的情況發生,我可以從那裏去,但警告從來沒有火災,我不知道爲什麼。

回答

0

綁定事件之前就定義功能,以這樣的方式

function handleStateChange() { 
    alert("State changed..."); 
} 
History.Adapter.bind(window, 'statechange', handleStateChange); 
$('nav a').on('click',function(e) { 
    var target = $(this).attr('href'); 

    History.pushState(null, null, target); 
}); 

或者像我平常喜歡做的更好,定義函數綁定裏面,當然如果你不需要稍後在腳本中使用相同的功能。

History.Adapter.bind(window, 'statechange', function() { 
    alert("State changed..."); 
}); 

$('nav a').on('click',function(e) { 
    var target = $(this).attr('href'); 

    History.pushState(null, null, target); 
}); 
+0

嗨MacK,我有一個類似的問題。如果我在一個頁面中使用它,例如:a.html?state = 1和a.html?state = 2,則腳本將正常工作。但是,我在兩個頁面中使用了History.js,如:a.html和b.html。所以,它無法運行。請幫助我在這個問題:http://stackoverflow.com/questions/19586033/how-to-use-history-js-to-capture-back-event –

1

我認爲「$(‘導航一’)」是在你已經發布的代碼一個錯字,它應該是:

.... 
$('#nav a').on('click',function(e) { 
var target = $(this).attr('href'); 
.... 

在這種FIDDLE我假設你想使用標籤與「nav」作爲id屬性和其內部的一些鏈接的div div 希望它有幫助..

+0

_ [導航](http://www.w3 .org/wiki/HTML/Elements/nav)_元素是一個新的HTML5標記,在這種情況下不是一個錯字:) – MacK

+0

我不知道這個新標記...所以如果你把它看作'div'或'p'或像任何其他標籤我假設:$('nav')。find('a')是正確的編碼方式... – lollo

相關問題