1

我在我的 ios 应用程序上使用 uiwebview。我在它上面有文本框,它导航 uiwebview。我输入 m.youtube.com 并且 webview 完美地加载了它。我在 youtube.com 上进行了搜索,结果加载完美。当我单击任何视频时,我会转到视频页面,并且我希望该页面的 url 链接将与要观看的视频一起出现。 m.youtube.com/watch?v=sa+2DFdfd .. 但如何?

搜索备注:

当我使用 safari 在我的 iphone 5 上尝试此操作时,我看到导航栏根据我所在的页面完美地变化。在这个例子中,我看到了;m.youtube.com/watch?v=34124S 在 safari 但我无法在 uiwebview 上找到它......我无法获得最新加载的网页链接。

ShouldLoadStart 仅适用于第一次加载页面。然后当你点击页面时;如果链接是链接类型, <a href='/someLink' />则 ShouldLoadStart 会捕获链接,但如果它是由 javascript 类型的链接制成,则代表不会捕获单击的链接。请帮助捕捉 m.youtube.com/watch?v=34124S 就像 safari 在 youtube 页面上所做的那样。

4

4 回答 4

3

如果您想存储 url,这将执行以下操作:

NSString *currentURL = [webView stringByEvaluatingJavaScriptFromString:@"window.location"];

或者

currentURL = currentWebView.request.URL.absoluteString;

试试上面两个

-(void)webViewDidFinishLoad:(UIWebView *)webView

这也可以做到:

-(void)webViewDidFinishLoad:(UIWebView *)webView
{
  NSLog(@"%@",webView.request.mainDocumentURL);

 [_activityindicator stopAnimating];
}
于 2013-09-09T06:35:14.473 回答
0

在你的 webview 委托类中实现这个

- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType 
{
    //CAPTURE USER LINK-CLICK.
    NSURL *url = [request URL];
    NSLog(@"clicked url: %@",[url absoluteString]);

    return YES;
}
于 2013-09-09T06:48:22.463 回答
0

我通过使用中央通知获得了链接。当视频出现完整视图时,我捕捉到该事件并获得加载的页面内部 html 并获得唯一链接..

如果您有更好的想法,请在下面分享!

于 2013-09-11T10:46:46.757 回答
0

我遇到过同样的问题。如果是这种情况,您可以使用 WKWebView。

对于 UIWebView,我发现的唯一解决方案是通过 javascript 获取当前 URL:

    [webView stringByEvaluatingJavaScriptFromString: @"location.href"];

下一个问题是 shouldStartLoadWithRequest 没有被触发。要解决它,您可以使用 NSURLProtocol 覆盖请求(顺便说一句,使用 WKWebView 是不可能的)。或者只是通过计时器每秒检查当前 URL :)

于 2018-10-26T11:55:34.243 回答