UIWebView 获取请求 URL 路径(html 字符串)
UIWebView get request URL path (html string)
我能够将 HTML 字符串加载到 UIWebView
和从在线资源获得的 CSS 中。我现在的问题是获取被点击的 link 的路径。如果我使用这个:
webView.loadHTMLString(finalHtml, baseURL: baseUrl)
当我在 UIWebViewDelegate
shouldStartLoadWithRequest
中 println(webView.request?.URL.path)
时,我得到的路径被点击为“/”。
如果我使用这个:
webView.loadHTMLString(finalHtml, baseURL: nil)
当我 println(webView.request?.URL.path)
时,我得到 "nil"
当然,我把baseURL
设为原网址,但据我了解,如果link有完整地址,baseURL
就无所谓了。
任何专业人士对如何获得被点击的 link 的标签中指示的实际路径有任何建议吗?提前谢谢你=D
编辑 当我长按 link 时,将会弹出一个显示正确 link 的窗口。我已经尝试了所有方法,包括 absoluteString
,但我仍然无法获取路径。
看看 Documentation 的 NSURL。
除了路径,还有一个属性 absoluteString
,包括host,base URL等
如果 webView.loadHTMLString(finalHTML, baseURL: baseURL)
和 println(webView.request?.URL.path)
在同一个代码块中调用,webView
将不会有非零 request
属性 ,因此您无法获得该请求的 URL 路径。 UIWebView
正在异步加载您的 HTML 字符串。您可以实施 UIWebViewDelegate
以查看何时在您的 UIWebView
中点击 link。使用以下委托方法:
func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool {
if navigationType == .LinkClicked {
println(request.URL.path)
}
return true
}
如果您想查看所有请求的路径,包括向后导航、向前导航等,请省略 if navigationType == .LinkClicked
条件。
所以似乎所有人都没有注意到我在代码中犯了一个愚蠢的错误。我应该使用 request.URL.path
而不是 webView.request?.URL.path
。真正让我如此痛苦的小事。所以如果有人像我一样傻,在你的 shouldStartLoadWithRequest
中,使用 request
而不是 webView.request
。
我能够将 HTML 字符串加载到 UIWebView
和从在线资源获得的 CSS 中。我现在的问题是获取被点击的 link 的路径。如果我使用这个:
webView.loadHTMLString(finalHtml, baseURL: baseUrl)
当我在 UIWebViewDelegate
shouldStartLoadWithRequest
中 println(webView.request?.URL.path)
时,我得到的路径被点击为“/”。
如果我使用这个:
webView.loadHTMLString(finalHtml, baseURL: nil)
当我 println(webView.request?.URL.path)
当然,我把baseURL
设为原网址,但据我了解,如果link有完整地址,baseURL
就无所谓了。
任何专业人士对如何获得被点击的 link 的标签中指示的实际路径有任何建议吗?提前谢谢你=D
编辑 当我长按 link 时,将会弹出一个显示正确 link 的窗口。我已经尝试了所有方法,包括 absoluteString
,但我仍然无法获取路径。
看看 Documentation 的 NSURL。
除了路径,还有一个属性 absoluteString
,包括host,base URL等
如果 webView.loadHTMLString(finalHTML, baseURL: baseURL)
和 println(webView.request?.URL.path)
在同一个代码块中调用,webView
将不会有非零 request
属性 ,因此您无法获得该请求的 URL 路径。 UIWebView
正在异步加载您的 HTML 字符串。您可以实施 UIWebViewDelegate
以查看何时在您的 UIWebView
中点击 link。使用以下委托方法:
func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool {
if navigationType == .LinkClicked {
println(request.URL.path)
}
return true
}
如果您想查看所有请求的路径,包括向后导航、向前导航等,请省略 if navigationType == .LinkClicked
条件。
所以似乎所有人都没有注意到我在代码中犯了一个愚蠢的错误。我应该使用 request.URL.path
而不是 webView.request?.URL.path
。真正让我如此痛苦的小事。所以如果有人像我一样傻,在你的 shouldStartLoadWithRequest
中,使用 request
而不是 webView.request
。