通過JavaScript操作瀏覽器前進後退列表
最近經常需要解決一下前進後退的問題,在追溯webkit源代碼中發現了history這個JS對象有些特殊處理是我們之前沒發現的。
主要方法爲 pushState() 和 replaceState() ,其說明文檔在:
https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Manipulating_the_browser_history?redirectlocale=en-US&redirectslug=Web%2FGuide%2FDOM%2FManipulating_the_browser_history
這裏簡述一下這兩個函數的作用:
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")
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.