ios - 访问webViewDidFinishLoad中请求的URL?

标签 ios uiwebview

我是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/

相关文章:

ios - uiwebview 和移动 safari 中内容的区别?

iphone - 如何在 iOS - iPhone 上为同一类的不同实例命名

ios - 检查用户是否允许本地通知。 iOS 8.Obj-C

ios - View 在 iOS 中显示不正确

uiwebview - iOS 9 在 WebCore::FrameView::contentsSizeRespectingOverflow 中崩溃:

uiwebview - 应用传输安全性破坏了 Web View

iphone - UIWebView Fontsize 和 UItextView Fontsize 之间的区别

ios - WKWebView 在将 html 和 javascript 与应用程序捆绑时给出 SecurityError

ios - 重写 Swift 中行插入的 withRowAnimation 样式

ios - 使用 RestKit 映射 url