我可以使用从在线资源获得的CSS将HTML字符串加载到UIWebView
中。我现在遇到的问题是获取被点击的链接的路径。如果我用这个:
webView.loadHTMLString(finalHtml, baseURL: baseUrl)
println(webView.request?.URL.path)
UIWebViewDelegate
中shouldStartLoadWithRequest
时,我点击的路径为“/”。
如果我使用它:
webView.loadHTMLString(finalHtml, baseURL: nil)
当我println(webView.request?.URL.path)
当然,我已将baseURL
设置为原始网站,但据我了解,如果链接包含完整地址,则baseURL
无关紧要。
有关如何获取点击链接标签中指示的实际路径的任何建议吗?提前谢谢= D
编辑当我长按链接时,会弹出一个显示正确链接的弹出窗口。我已尝试过所有内容,包括absoluteString
,但我仍然无法获得路径。
答案 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
。