我是iOS开发的新手,请保持冷静。
我知道webViewDidFinishLoad
将为每个<iframe>
加原始的html页面触发。
我正在尝试查找导致该webViewDidFinishLoad
的请求的URL。据我所知,我只能访问webView.request.mainDocumentURL。
我感到困惑。在shouldStartLoadWithRequest
方法内(该方法也将为每个<iframe>
和原始html请求触发),您可以访问相关的URL,无论是iframe还是父页面。
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
NSLog(@"Parent page request: %@", request.mainDocumentURL);
NSLog(@"Actual URL request: %@", [request URL]); // This returns what I want.
return YES;
}
该第一条日志语句将输出URL。
但是,在
webViewDidFinishLoad
内部- (void)webViewDidFinishLoad:(UIWebView *)webView
{
NSURLRequest* request = [webView request];
NSLog(@"Parent page request: %@", request.mainDocumentURL);
NSLog(@"Request outputs the parent, not the iframe: %@", [request URL]);
// how do I access the <iframe> url?
}
帮我StackOverflow。我的谷歌赋很弱,你的智慧很强。
编辑:我对此目标应该很清楚。我想在父页面的加载事件触发时执行Stuff™,而不是针对iframe。我希望这种情况尽快发生,所以我不想等到一切完成。
最佳答案
将UIWebView视为浏览器。您要查询的对象的范围是在浏览器级别,而iFrame则更精细。填充iFrame的URL用于流传输页面的该部分内容,但是出于UIWebView的目的,您只需要记住主URL,这样就可以管理页面(重新加载等)。 URL显然带有有关如何管理iFrame内容的说明。
如果您确实需要这些iFrame源URL,则只需扩展UIWebView即可容纳一个链接数组(在“shouldStartLoadWithRequest
”内部填充该数组)。然后,您可以使用该链接列表执行任何操作。
祝好运。
关于ios - 访问webViewDidFinishLoad中请求的URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17923332/