UIWebView获取请求URL路径(html字符串)

时间:2015-01-13 06:31:15

标签: ios swift uiwebview

我可以使用从在线资源获得的CSS将HTML字符串加载到UIWebView中。我现在遇到的问题是获取被点击的链接的路径。如果我用这个:

webView.loadHTMLString(finalHtml, baseURL: baseUrl)

println(webView.request?.URL.path) UIWebViewDelegateshouldStartLoadWithRequest时,我点击的路径为“/”。

如果我使用它:

webView.loadHTMLString(finalHtml, baseURL: nil)

当我println(webView.request?.URL.path)

时,我得到“nil”

当然,我已将baseURL设置为原始网站,但据我了解,如果链接包含完整地址,则baseURL无关紧要。

有关如何获取点击链接标签中指示的实际路径的任何建议吗?提前谢谢= D

编辑当我长按链接时,会弹出一个显示正确链接的弹出窗口。我已尝试过所有内容,包括absoluteString,但我仍然无法获得路径。

3 个答案:

答案 0 :(得分:1)

如果在同一代码块中调用了webView.loadHTMLString(finalHTML, baseURL: baseURL)println(webView.request?.URL.path),那么webView将不具有非零request属性,因此您可以'获取该请求的URL路径。 UIWebView异步加载HTML字符串。您可以实施UIWebViewDelegate以查看在UIWebView中点击链接的时间。使用以下委托方法:

func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool {
    if navigationType == .LinkClicked {
        println(request.URL.path)
    }
    return true
}

如果您想查看所有请求的路径,包括向后导航,转发等,请忽略if navigationType == .LinkClicked条件。

答案 1 :(得分:0)

查看NSURL的Documentation

除了path之外,还有一个属性absoluteString,其中包含主机,基本URL等。

答案 2 :(得分:0)

因此,似乎在每个人的眼中都没有发现我在我的代码中犯了一个愚蠢的错误。我应该使用webView.request?.URL.path而不是request.URL.path。非常小的事情让我如此痛苦。因此,如果有人和我一样愚蠢,请在shouldStartLoadWithRequest中使用request代替webView.request