通过在 WKWebView 中评估 JavaScript 来获取 HTML
Posted
技术标签:
【中文标题】通过在 WKWebView 中评估 JavaScript 来获取 HTML【英文标题】:Get HTML by evaluating JavaScript in a WKWebView 【发布时间】:2017-11-03 10:05:39 【问题描述】:我在我的 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
【问题讨论】:
【参考方案1】:问题是网页没有完全加载!我在 ViewDidAppear 中调用了我的函数,但是在我添加了一个按钮并在按下按钮时调用了 javascript 之后,我得到了我正在寻找的 HTML。
【讨论】:
以上是关于通过在 WKWebView 中评估 JavaScript 来获取 HTML的主要内容,如果未能解决你的问题,请参考以下文章
WKWebView 在不重新加载页面的情况下评估 Javascript
在 WKWebView 的 iframe 中评估 JavaScript?
如何通过 WKWebVIew 或 JSC 在 iOS 应用程序中加载 WebAssembly