使用evaluateJavaScript从WKWebView获取标题
我有一个非常简单/容易的问题,但对java的经验绝对没有。 我有一个WKWebView
,我想使用javascript document.getElementById
获取页面的标题文本。
我试图获取标题的网页有以下代码:
这段代码被删节,所以我为任何错误道歉。
然后我试图访问Swift中的pageTitle:
func webView(webView: WKWebView, didFinishNavigation navigation: WKNavigation!) { webView.evaluateJavaScript("document.getElementById('pageTitle').value") { (result, error) -> Void in if error != nil { print(result) } } }
结果是返回零。 经过几个小时的搜索,我仍然不知道如何让它工作。 任何帮助表示赞赏。
您不应该使用javascript来检索页面标题。 WKWebView有一个title
属性,可以为你检索这个
title
页面标题。 (只读)SWIFT
var title: String? { get }
var title: String? { get }
WKWebView类是此属性的键值观察(KVO)兼容。
适用于iOS 8.0及更高版本。
使用Node.textContent获取文本节点内容的正确副本。
webView.evaluateJavaScript("document.getElementById('pageTitle').textContent") { (result, error) -> Void in if error != nil { print(result) } }
我使用了相同的代码片段,并解决了问题…它只会打印结果,如果它是“无”!
尝试:
webView.evaluateJavaScript("document.getElementById('pageTitle').textContent") { (result, error) -> Void in if error == nil { print(result) } }
在代码中出现错误时,代码将打印结果。 当没有错误发生时,这将不打印任何内容。
所以将代码更改为此,一切正常。
func webView(webView: WKWebView, didFinishNavigation navigation: WKNavigation!) { webView.evaluateJavaScript("document.getElementById('pageTitle').innerHTML") { (result, error) -> Void in if error != nil { print(error) } print(result) } }
这段代码对我有用:
webView.evaluateJavaScript("document.title').textContent") { (result, error) -> Void in if error == nil { print(result) } }