我正在使用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只返回一个空字符串(Optional(""))。window.location.href部件工作正常。我做错什么了?
发布于 2015-03-24 17:07:26
我认为您必须像这样评估javascript:
let doc = webView.stringByEvaluatingJavaScriptFromString("document.documentElement.outerHTML")在这种情况下,您将得到整个HTML。
发布于 2020-03-09 02:15:54
现在,当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...
}发布于 2015-11-17 10:10:23
我找到了jqxWidget问题的解决方案。UIWebView内容引用的是.js和.css文件,这两个文件已经捆绑在应用程序中。我只添加了应用程序的MainBundle的基本网址。
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];https://stackoverflow.com/questions/29235225
复制相似问题