【问题标题】:iPhone - UIWebview - Get the URL of the link clickediPhone - UIWebview - 获取点击链接的 URL
【发布时间】:2011-06-08 10:33:56
【问题描述】:

我正在创建一个应用程序,该应用程序在顶部有一个文本字段和转到按钮,在它们下方有一个 Web 视图。 当用户在文本字段中输入 URL 并单击“Go”按钮时,它将开始在 webview 中加载页面。 当用户单击某个链接时,我想在文本字段中显示页面的 URL(正在加载)。 如何获取点击链接的 URL。

还有一些网站会重定向到其他网站。所以我的问题是如何在文本字段中显示正在加载的页面的 URL?

【问题讨论】:

    标签: iphone url uiwebview


    【解决方案1】:

    为此目的有一个委托方法,像这样实现它:

    - (void)webViewDidStartLoad:(UIWebView *)webView {
        NSURL* url = [webView.request URL];
        urlTextField.text = [url absoluteString];
    }
    

    【讨论】:

    • 这工作正常。但是发现了一个问题。那就是我输入了yahoo.com,它的加载很好。但文本字段正在被清除。当我点击雅虎页面中的一些链接时,它会正确显示 URL。
    【解决方案2】:

    在你的 UIWebViewDelegate 类中实现这个

    - (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType {
        //CAPTURE USER LINK-CLICK.
          NSURL *url = [request URL];
          yourTextBox.text =   [url absoluteString];
    
    
          return YES;   
    }
    

    【讨论】:

    【解决方案3】:

    如果你特别想要用户点击的链接的url,那么用这种方式找到它。

    - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
    {
        if (navigationType == UIWebViewNavigationTypeLinkClicked) {
            NSLog(@"link clicked = %@",request.mainDocumentURL);
        }
        return YES;
    }
    

    此外,如果您想要任何请求的 url,通过点击链接从客户端请求或您从 webView 明确请求,请使用

    NSLog(@"link clicked = %@",self.webView.request.mainDocumentURL);
    

    如果您想要从客户端请求的任何当前 url,或者它们是您自动打开的页面请求的,请使用。

    NSLog(@"link clicked = %@",self.webView.request.URL);
    

    这是我经过长时间搜索后找到的所有内容,可能会对某人有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-01
      • 2013-12-26
      • 2014-02-25
      • 2011-07-11
      • 2017-11-08
      • 2013-07-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多