通過JavaScript操作瀏覽器前進後退列表

最近經常需要解決一下前進後退的問題,在追溯webkit源代碼中發現了history這個JS對象有些特殊處理是我們之前沒發現的。
 
這裏簡述一下這兩個函數的作用:
pushState爲給前進後退加一個item,但不會觸發網頁加載。
replaceState()  則爲可以替換當前的url item,也不會觸發網頁加載。
 
上述兩者都只會在發生前進後退的時候產生影響。(當然,JS是不能跨域的)
 
對於Webkit瀏覽器,我們要處理以下回調,從而響應URL的變更:
//WebFrameLoadDelegatePrivate
- (void)webView:(WebView *)webView didPushStateWithinPageForFrame:(WebFrame *)frame;
- (void)webView:(WebView *)webView didReplaceStateWithinPageForFrame:(WebFrame *)frame;
- (void)webView:(WebView *)webView didPopStateWithinPageForFrame:(WebFrame *)frame;
- (void)webView:(WebView *)webView didRemoveFrameFromHierarchy:(WebFrame *)frame;
 
 
舉個例子:
打開www.uc.cn後,在console輸入 history.replaceState("","","http://www.uc.cn/iphone-hahah") 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章