webViewDidFinishLoad not calling when having javascript content in webpage

时光总嘲笑我的痴心妄想 提交于 2019-12-25 02:05:34

问题


I'm using UIWebView in a project. Sometimes it doesn't call the webViewDidFinishLoad method. Because the web page have some javascripts. The method

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

is getting call but webViewDidFinishLoad doesn't. I want to catch that method. Because I'm start an animation when the webview start loading. Then I want to stop this animation when it finished. It's not working with websites having javascript content. Any one have an idea please?

Thanks


回答1:


webViewDidFinishLoad method gets called when the UIWebView has finished loading the url, in your case since you are calling a javascript, it doesn't load your content, it just calls a javascript function in your already loaded webview. But YES you can catch the javascript actions in the same method you stated as below

- (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:


apparently, the webview in ios checks specifically for "iframe" tags in the html's dom and in case it finds, it creates events based on that tag as well. therefore, a simple however a patchy solution would be adding the following code in the part of the dom that is changing (for example, in the actual template of each section):

<iframe></iframe>

did the trick for me..



来源:https://stackoverflow.com/questions/16274059/webviewdidfinishload-not-calling-when-having-javascript-content-in-webpage

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!