IOS 實時獲取UIWebView中的html內容
在開發時,可能需要提取網頁中的部分資料,比如標籤內的標題,或者是網頁的描述資訊,這裡利用UIWebView的Javascript可內聯HTML特性抓取網頁中的元素實現的。
open func stringByEvaluatingJavaScript(from script: String) -> String?
stringByEvaluatingJavaScript方法是將Javascript命令嵌入網頁中,抓取資料
swift3.0:
獲取html頁面title的值:
let title : String = self.webView.stringByEvaluatingJavaScript(from: “document.title”)
self.webView.stringByEvaluatingJavaScript(from: “document.getElementsByTagName(‘html’)[0].innerHTML”)//打印出值為”<head></head><body></body>"
獲取html頁面上element的值:
let username : String = self.webView.stringByEvaluatingJavaScript(from: “document.getElementsByName(‘username’)[0].value")
給html頁面上element賦值:
let loadUserNameJS = String.init(format: "document.getElementsByName('username')[0].value = '%@'", email ?? “")
//autofill the form
self.webView.stringByEvaluatingJavaScript(from: loadUserNameJS)
使用UIWebViewDelegate協議,並在你的delegate中實現如下的方法:
func webViewDidFinishLoad(_ webView: UIWebView) {
//verify view is on the login page of the site (simplified)
let requestURL : URL? = self.webView.request?.url
}
func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool {
return true
}