2011-10-26 62 views
0

我正在使用AJAX刷新頁面上的內容,因此嘗試使用HTML5中的歷史API。除了谷歌瀏覽器之外,我在所有瀏覽器中都能正常工作。下面的代碼 -onPopState()僅在Google Chrome中拋出錯誤

/** 
* Reloads the ajax content if the history.state is not null 
*/ 
window.onpopstate = function(e){ 
    if(e.state !== null){ 
     initiate_load_updated_page(window.history.state.ajax_string, window.history.state.security, 0) 
    } 
} 

生成此錯誤 -

Uncaught TypeError: Cannot read property 'ajax_string' of undefined 

這裏是我使用pushState()代碼 -

/** Update the page history */ 
if(window.history.replaceState){ // Check for HTML5 support 
    if(update_state !== 0){ 
     var object = { 
      ajax_string: ajax_string, 
      security: security, 
     }; 
     window.history.pushState(object, title, permalink); 
    } 
} 

我看過其他地方,谷歌Chrome瀏覽器觸發onPopState()事件兩次,但我不確定這是否是這裏的突發事件,如果是,如何解決。

謝謝。

+1

你們爲什麼試探,如果'e.state'爲null,但是如果使用'window.history.state'?你知道'window.history.state'不是null嗎?爲什麼不'e.state.ajax_string'? – robertc

+0

你是先生,是天才。這看起來工作 - 甚至沒有想到這一點! –

+0

我會將它添加爲答案:) – robertc

回答

2

在你popstate處理程序,你應該使用e.statewindow.history.state

if(e.state !== null){ 
    initiate_load_updated_page(e.state.ajax_string, e.state.security, 0) 
}