webViewDidStartLoad请求URL未设置为正在加载的URL

时间:2012-03-22 23:03:04

标签: iphone ios ios4 uiwebview nsurlrequest

我正在使用具有后退和前进按钮的浏览器,在点击时,应立即显示正在加载的页面的URL。目前我执行类似[webView goBack];的操作,然后实现委托UIWebView方法:

- (void)webViewDidStartLoad:(UIWebView *)aWebView {
  NSLog(@"began loading URL: %@", aWebView.request.URL);
}

但这不会导致我期望的行为。

例如,如果我从www.google.com开始,然后导航到www.aol.com,然后按后退按钮,调用Web视图的goBack代码,NSLog将输出began loading URL: http://www.aol.com/即使它应该声明google.com正在加载。然而,谷歌页面将在Web视图中完美加载。我不明白的是为什么URL与正在加载的内容不一致。有时日志会吐出正在加载aol.com,然后是google.com,但这有时只会发生。这是SDK的错误还是我错过了什么?

提前致谢。

3 个答案:

答案 0 :(得分:3)

尝试使用此委托方法

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    NSLog(@"Request Url:%d",request.URL.absoluteURL);
}

答案 1 :(得分:0)

我建议每次加载一个新的url时都使用一个字符串数组,你将它添加到数组中,然后根据后退/前进单击定义一个全局计数器增加/ deacrease,这样你就可以像这样轻松获取url < / p>

NSString *urlString = [urlArray objectAtIndex:theCounterValue];

答案 2 :(得分:0)

尝试:

NSString *currentURL;
currentURL = [[NSString alloc] initWithFormat:@"%@", webView.request.mainDocumentURL];