【问题标题】:webViewDidFinishLoad not calling when having javascript content in webpage网页中有 javascript 内容时 webViewDidFinishLoad 不调用
【发布时间】:2013-04-22 20:21:49
【问题描述】:

我在一个项目中使用UIWebView。有时它不会调用webViewDidFinishLoad 方法。因为网页有一些javascripts。方法

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

正在接到电话,但 webViewDidFinishLoad 没有。我想抓住那个方法。因为我在 webview 开始加载时开始动画。然后我想在它完成时停止这个动画。它不适用于具有 javascript 内容的网站。请问大家有什么想法吗?

谢谢

【问题讨论】:

    标签: javascript iphone ios uiwebview uiwebviewdelegate


    【解决方案1】:

    webViewDidFinishLoad 方法在 UIWebView 完成加载 url 时被调用,在你的情况下,因为你调用的是 javascript,它不会加载你的内容,它只是调用你的 javascript 函数已加载webview。但是YES 你可以用你下面所说的同样的方法来捕捉 javascript 动作

    - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{
    
        NSString *url = [[request URL] absoluteString];
    
        if(navigationType == UIWebViewNavigationTypeLinkClicked){
    
              if([url rangeOfString:@"SOMETHING"].length > 0 ){ 
                 //if your action returns something appended in your url like the anchors work
    
                         //DO YOUR STUFFS       
              }
        }
    
        return TRUE;
    
    
    }
    

    【讨论】:

      【解决方案2】:

      显然,ios 中的 webview 专门检查 html 的 dom 中的“iframe”标签,如果找到,它也会基于该标签创建事件。因此,一个简单但不完整的解决方案是在正在更改的 dom 部分添加以下代码(例如,在每个部分的实际模板中):

      <iframe></iframe>
      

      为我做了诀窍..

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-03-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-08
        相关资源
        最近更新 更多