我正在使用一些工具栏按钮来返回和转发 UIWebview 中的历史网页。
我正在使用[webview canGoBack]
调用 at启用/禁用这些按钮webViewDidStartLoad
。在大多数网站上都可以正常工作,但问题是,在twitter和facebook等使用 javascript/ajax 请求重新加载新页面canGoBack
并且canGoForward
无法识别页面更改的网站上,我的按钮不会变为活动状态。
有办法解决这个问题吗?
我正在使用一些工具栏按钮来返回和转发 UIWebview 中的历史网页。
我正在使用[webview canGoBack]
调用 at启用/禁用这些按钮webViewDidStartLoad
。在大多数网站上都可以正常工作,但问题是,在twitter和facebook等使用 javascript/ajax 请求重新加载新页面canGoBack
并且canGoForward
无法识别页面更改的网站上,我的按钮不会变为活动状态。
有办法解决这个问题吗?
以我的经验,站点本身必须在其 AJAX 请求之上支持后退/转发。它需要 Web 应用程序更改每个页面导航的 URL。
有关此问题的一些讨论,请参见http://www.devx.com/webdev/Article/35549。
所以,具体到您的问题 - 如果它是您自己的网络应用程序,那绝对是可能的(有几个 javascript 解决方案,其中一个在上面链接),但对于 3rd 方网络应用程序,我会说不。
设法使用webView:shouldStartLoadWithRequest:navigationType拼凑一个解决方案:
- (BOOL)webView:(UIWebView *)myWebView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;
此时我启用了后退按钮。似乎工作正常。
(void)webViewDidStartLoad:(UIWebView *)webView{
[SVProgressHUD showWithStatus:@"请稍候..."];
if (webView.canGoBack) { self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:btnBack]; } else { self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] init]; } }