通过在 WKWebView 中计算 JavaScript 得到 HTML
Get HTML by evaluating JavaScript in a WKWebView
我在我的 iOS 应用程序中使用 WKWebView
,在加载网页后,我想获得 gmail.com 的 HTML。我在 ViewDidAppear 中调用的函数中有这个表达式:
func getHTML() {
webView.evaluateJavaScript("document.documentElement.outerHTML.toString()", completionHandler: { (html: Any?, error: Error?) in
print(html)
})
}
但是,当我 运行 这个函数时,我在控制台中得到以下输出:
Optional(<html><head></head><body></body></html>)
我做错了什么? Gmail 并不是唯一给我这个结果的网页——我尝试的每个页面都给我相同的输出。
这是我的全部代码:
// MARK: Outlets
@IBOutlet weak var webView: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
let url = URL(string: "https://www.gmail.com")!
let request = URLRequest(url: url)
webView.navigationDelegate = self
self.webView.load(request)
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
getHTML() // the function posted above
}
问题是网页没有完全加载!我在 ViewDidAppear 中调用了我的函数,但是在我添加了一个按钮并在按下按钮时调用了 javascript 之后,我得到了我正在寻找的 HTML 。
我在我的 iOS 应用程序中使用 WKWebView
,在加载网页后,我想获得 gmail.com 的 HTML。我在 ViewDidAppear 中调用的函数中有这个表达式:
func getHTML() {
webView.evaluateJavaScript("document.documentElement.outerHTML.toString()", completionHandler: { (html: Any?, error: Error?) in
print(html)
})
}
但是,当我 运行 这个函数时,我在控制台中得到以下输出:
Optional(<html><head></head><body></body></html>)
我做错了什么? Gmail 并不是唯一给我这个结果的网页——我尝试的每个页面都给我相同的输出。
这是我的全部代码:
// MARK: Outlets
@IBOutlet weak var webView: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
let url = URL(string: "https://www.gmail.com")!
let request = URLRequest(url: url)
webView.navigationDelegate = self
self.webView.load(request)
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
getHTML() // the function posted above
}
问题是网页没有完全加载!我在 ViewDidAppear 中调用了我的函数,但是在我添加了一个按钮并在按下按钮时调用了 javascript 之后,我得到了我正在寻找的 HTML 。