Tam*_*isk 5 javascript ios swift wkwebview
我有一个非常简单/简单的问题,但对java的经验绝对没有.我有一个WKWebView,我想使用javascript获取页面的标题文本document.getElementById.
我试图获取标题的网页有以下代码:
<html>
<body>
<div class="toolbar">
<h1 id="pageTitle">Schedules</h1>
</div>
</body>
<html>
Run Code Online (Sandbox Code Playgroud)
这段代码被删节,所以我为任何错误道歉.
然后我试图访问Swift中的pageTitle:
func webView(webView: WKWebView, didFinishNavigation navigation: WKNavigation!) {
webView.evaluateJavaScript("document.getElementById('pageTitle').value") { (result, error) -> Void in
if error != nil {
print(result)
}
}
}
Run Code Online (Sandbox Code Playgroud)
结果是返回零.经过几个小时的搜索,我仍然不知道如何让它工作.任何帮助表示赞赏.
正如@SilkyPantsDan 所提到的,如果您只是对 . 感兴趣title,则无需使用 JS。首先你开始观察:
override func viewDidLoad() {
super.viewDidLoad()
webView.addObserver(self, forKeyPath: #keyPath(WKWebView.title), options: .new, context: nil)
}
Run Code Online (Sandbox Code Playgroud)
并在title更新时处理您的逻辑:
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
if keyPath == "title" {
title = webView.title
}
}
Run Code Online (Sandbox Code Playgroud)
最后,如果您支持 iOS 8.0,您应该停止观察,因为在 iOS 9.0 之前观察者不会自动删除:
deinit {
webView.removeObserver(self, forKeyPath: "title")
//webView.removeObserver(self, forKeyPath: "estimatedProgress")
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10276 次 |
| 最近记录: |