如何从 UIWebView 获取 html 内容?
How to get the html content from UIWebView?
我正在使用 UIWebView 加载网页
let urlStr = "http://duckduckgo.com"
let urlReq = NSMutableURLRequest(URL: NSURL(string: urlStr)!)
webView.loadRequest(urlReq)
然后,当页面加载完成后,我想访问 html 内容
func webViewDidFinishLoad(webView: UIWebView) {
let href = webView.stringByEvaluatingJavaScriptFromString("window.location.href")
println("window.location.href = \(href)")
let doc = webView.stringByEvaluatingJavaScriptFromString("document")
println("document = \(doc)")
}
但是 document 只是 return 一个空字符串 (Optional("")
)。 window.location.href 部分工作正常。我做错了什么?
我认为您必须这样评价 javascript:
let doc = webView.stringByEvaluatingJavaScriptFromString("document.documentElement.outerHTML")
在这种情况下,您将获得整个 HTML。
我找到了关于 jqxWidget 问题的解决方案。
UIWebView 内容引用了 .js 和 .css 文件,这些文件已经捆绑在 App 中。我刚刚只添加了 App 的 MainBundle 的基础 url。
NSString *html = [self.webview1 stringByEvaluatingJavaScriptFromString: @"document.documentElement.outerHTML"]; //document.body.innerHTML
NSString *path = [[NSBundle mainBundle] bundlePath];
NSURL *baseURL = [NSURL fileURLWithPath:path];
[objFullScreenViewCntrl.webview2 loadHTMLString:html baseURL:baseURL];
现在,当 UIWebView 被弃用时,您需要使用如下语法:
webView.evaluateJavaScript("document.documentElement.outerHTML") { (html, error) in
guard let html = html as? String else {
print(error)
return
}
// Here you have HTML of the whole page.
}
之后你可以创建一个像这样的函数,它可以很容易地从 webView 中获取 HTML:
func getHTML(_ completion: @escaping (String) -> ()) {
webView.evaluateJavaScript("document.documentElement.outerHTML") { (html, error) in
guard let html = html as? String else {
print(error)
return
}
completion(html)
}
}
getHTML { html in
// Here you have HTML string
print(html) // for example...
}
我正在使用 UIWebView 加载网页
let urlStr = "http://duckduckgo.com"
let urlReq = NSMutableURLRequest(URL: NSURL(string: urlStr)!)
webView.loadRequest(urlReq)
然后,当页面加载完成后,我想访问 html 内容
func webViewDidFinishLoad(webView: UIWebView) {
let href = webView.stringByEvaluatingJavaScriptFromString("window.location.href")
println("window.location.href = \(href)")
let doc = webView.stringByEvaluatingJavaScriptFromString("document")
println("document = \(doc)")
}
但是 document 只是 return 一个空字符串 (Optional("")
)。 window.location.href 部分工作正常。我做错了什么?
我认为您必须这样评价 javascript:
let doc = webView.stringByEvaluatingJavaScriptFromString("document.documentElement.outerHTML")
在这种情况下,您将获得整个 HTML。
我找到了关于 jqxWidget 问题的解决方案。 UIWebView 内容引用了 .js 和 .css 文件,这些文件已经捆绑在 App 中。我刚刚只添加了 App 的 MainBundle 的基础 url。
NSString *html = [self.webview1 stringByEvaluatingJavaScriptFromString: @"document.documentElement.outerHTML"]; //document.body.innerHTML
NSString *path = [[NSBundle mainBundle] bundlePath];
NSURL *baseURL = [NSURL fileURLWithPath:path];
[objFullScreenViewCntrl.webview2 loadHTMLString:html baseURL:baseURL];
现在,当 UIWebView 被弃用时,您需要使用如下语法:
webView.evaluateJavaScript("document.documentElement.outerHTML") { (html, error) in
guard let html = html as? String else {
print(error)
return
}
// Here you have HTML of the whole page.
}
之后你可以创建一个像这样的函数,它可以很容易地从 webView 中获取 HTML:
func getHTML(_ completion: @escaping (String) -> ()) {
webView.evaluateJavaScript("document.documentElement.outerHTML") { (html, error) in
guard let html = html as? String else {
print(error)
return
}
completion(html)
}
}
getHTML { html in
// Here you have HTML string
print(html) // for example...
}