首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在UIWebView中确定iFrame加载完成

如何在UIWebView中确定iFrame加载完成
EN

Stack Overflow用户
提问于 2010-05-15 04:24:32
回答 3查看 3.5K关注 0票数 7

在我的应用程序中,我需要一种方法来判断我的webview何时完成加载。如果内容是html,这是很容易做到的。但是,我的内容源是iFrame里面的javascript,它会导致UIWebView finishedLoad方法被多次调用。有没有什么方法可以让我检查iframe是否已经加载完毕?

EN

回答 3

Stack Overflow用户

发布于 2010-11-20 02:56:57

我找到的唯一一种万无一失的方法是监听三个方法,它们说它即将开始加载,并且它完成了加载(加上“失败”的等价物),并手动维护每个方法的计数。

例如,类似于:

代码语言:javascript
运行
复制
int outstandingRequests;

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    outstandingRequests++;
}

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    outstandingRequests--;

    if( outstandingRequests < 1 )
    viewLoadingPleaseWait.hidden = TRUE;
}

- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
{
    outstandingRequests--;
}

我通常也不得不重写didFail方法-苹果错误地使用了这个方法来报告,例如YouTube播放器已经接管了YouTube视频的处理。这不是一个失败,而是一个“页面被不同的应用程序加载”。

例如:

代码语言:javascript
运行
复制
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
{
    outstandingRequests--;

    if( [error code] == NSURLErrorCancelled )
    {
        NSLog(@"[%@] ...webView CANCELLED loading", [self class] );
    }
    else if( [[error domain] isEqualToString:@"WebKitErrorDomain"]
    && [error code] == 204)
    {
        // no worries ... YouTube, iCal, or etc took over the page load
    }
}
票数 7
EN

Stack Overflow用户

发布于 2010-12-03 04:28:00

(如果是同一个域)您可以从iframe调用函数(在父级中)。

代码语言:javascript
运行
复制
top.iFrameLoaded();
票数 1
EN

Stack Overflow用户

发布于 2013-06-29 12:51:02

要判断网页视图是否正在加载,您可以使用webView.isLoading来检查网页视图的所有框架是否都已加载完毕。不计算必要的iframe数量。只需检查webViewDidFinishLoad:内部的isLoading是否为真

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIWebView_Class/Reference/Reference.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2837377

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档