从 UIWebView 委托方法中排除外部 javascript 内容

Posted

技术标签:

【中文标题】从 UIWebView 委托方法中排除外部 javascript 内容【英文标题】:Exclude external javascript content from UIWebView delegate methods 【发布时间】:2012-03-01 18:34:58 【问题描述】:

我有一个带有委托方法的 UIWebview

webViewDidStartLoad webViewDidFinishLoad

但是,在页面上,我正在加载一个 facebook 聊天组件,该组件由于某种原因无法正确加载(缓存问题?fb 问题?)它一遍又一遍地访问服务器,导致我的两个委托方法被调用一遍又一遍(它们唯一的用途是显示和隐藏活动指示器,因此我留下了一个闪烁的活动指示器)

当页面已加载但仍在“尝试”加载我无法控制的外部内容时,是否仍要停止调用这些方法?

  - (void)webViewDidStartLoad:(UIWebView *)webView 

    NSLog(@" I am in Webview did start");    

    if ( webView == self.myFlickView )
    
       [UIApplication sharedApplication].networkActivityIndicatorVisible = YES;

         




- (void)webViewDidFinishLoad:(UIWebView *)webView 

    NSLog(@" I am in Webview did end");    

    if ( webView == self.myFlickView )
    
       [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;

         



【问题讨论】:

【参考方案1】:

尝试在 webViewDidFinishLoad 处将委托设置为 nil。由于加载的网站中的 AJAX 调用,可能会多次调用委托。所以,请使用[webView setDelegate:nil]

希望对你有帮助。

【讨论】:

谢谢。但是当他们点击一个链接转到另一个页面时会发生什么,不再有活动指示器。

以上是关于从 UIWebView 委托方法中排除外部 javascript 内容的主要内容,如果未能解决你的问题,请参考以下文章

从 UIWebView 委托呈现 ViewController

在 UIWebView 中打开一些项目,在外部浏览器中打开其他项目

UIWebView 中的 UIScrollView 的委托方法未调用水平滚动

UIwebView shouldStartLoadWithRequest 委托调用后需要点击手势方法

@interface 中的 UIWebView 委托设置

为啥 UIWebView 不在我的应用程序委托中的 applicationWillTerminate: 处加载 NSURLRequest?