gpt4 book ai didi

javascript - UIWebView中如何判断iFrame加载完成

转载 作者:数据小太阳 更新时间:2023-10-29 04:39:26 25 4
gpt4 key购买 nike

在我的应用程序中,我需要一种方法来判断我的 WebView 何时完成加载。如果内容是 html,则很容易做到这一点。但是,我的内容源是javascript,里面有iFrame,这会导致多次调用UIWebView finishedLoad 方法。无论如何我可以检查 iframe 是否完成加载?

最佳答案

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

即像这样的东西:

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 方法 - Apple 错误地使用它来报告,例如YouTube 播放器接管了 YouTube 视频的处理。这不是失败,而是“页面由不同的应用程序加载”。

例如

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

关于javascript - UIWebView中如何判断iFrame加载完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2837377/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com