【问题标题】:Back/Forward buttons for UIWebView - canGoBack not working with ajax sitesUIWebView 的后退/前进按钮 - canGoBack 不适用于 ajax 网站
【发布时间】:2012-08-19 18:35:36
【问题描述】:

我正在使用一些工具栏按钮在 UIWebview 中来回浏览历史网页。

我使用[webview canGoBack] 调用webViewDidStartLoad 启用/禁用这些按钮。在大多数网站上都可以正常工作,但问题是,在像 twitterfacebook 这样使用 javascript/ajax 请求重新加载新页面 canGoBackcanGoForward 的网站上却不能识别页面更改,因此我的按钮不会变为活动状态。

有没有办法解决这个问题?

【问题讨论】:

    标签: objective-c ios ajax ios5 uiwebview


    【解决方案1】:

    根据我的经验,网站本身必须在其 AJAX 请求之上支持后退/前进。这将需要 Web 应用程序更改每个页面导航的 URL。

    有关此问题的一些讨论,请参阅http://www.devx.com/webdev/Article/35549

    所以,具体到您的问题 - 如果它是您自己的网络应用程序,那绝对是可能的(有几种 javascript 解决方案,其中一个已在上面链接),但对于 3rd 方网络应用程序,我会说不。

    【讨论】:

      【解决方案2】:

      设法使用webView:shouldStartLoadWithRequest:navigationType 拼凑出一个解决方案:

      - (BOOL)webView:(UIWebView *)myWebView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;
      

      此时我启用了后退按钮。似乎工作正常。

      【讨论】:

        【解决方案3】:
        • (void)webViewDidStartLoad:(UIWebView *)webView{

          [SVProgressHUD showWithStatus:@"请稍候..."];

          如果 (webView.canGoBack) { self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:btnBack]; } 别的 { self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] init]; } }

        【讨论】:

          猜你喜欢
          • 2013-03-29
          • 2011-11-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-04-26
          • 1970-01-01
          • 1970-01-01
          • 2011-01-20
          相关资源
          最近更新 更多