在 WKWebview 中突出显示文本时发生 JavaScript 异常
A JavaScript exception occurred while highlighting text in WKWebview
尝试使用 JS 文件在 WKWebview 中突出显示文本时,它一直失败并显示以下日志。
Optional(Error Domain=WKErrorDomain Code=4 "A JavaScript exception
occurred" UserInfo={WKJavaScriptExceptionLineNumber=0,
WKJavaScriptExceptionMessage=TypeError: undefined is not a function,
WKJavaScriptExceptionColumnNumber=0, NSLocalizedDescription=A
JavaScript exception occurred})
在 func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!)
中,我添加了以下行
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + Double(Int64(0.3 * Double(NSEC_PER_SEC))) / Double(NSEC_PER_SEC)) {() -> Void in
webView.evaluateJavaScript("uiWebview_HighlightAllOccurencesOfString(\"a\")", completionHandler: { (returnVal: Any?, error: Error?) -> Void in
print(error)
})
}
它没有突出显示文本。我在这里错过了什么?
function uiWebview_HighlightAllOccurencesOfString(keyword)
在js文件里
有什么建议吗?
试试这个:
webView.evaluateJavaScript("this.uiWebview_HighlightAllOccurencesOfString(\"a\");"...
只需在js代码末尾添加this.
和;
希望对您有所帮助
问题是,用户脚本没有正确添加。
let userContentController = WKUserContentController()
userContentController.add(messageHandler, name: "jsBridge")
let audioString = Bundle.main.url(forResource: "GetAudioLinks", withExtension: "js", subdirectory:"/Assets/js/" )
let audioStringScript = WKUserScript(source: audioString, injectionTime: .atDocumentEnd, forMainFrameOnly: true)
userContentController.addUserScript(audioStringScript)
现在,它工作正常。
尝试使用 JS 文件在 WKWebview 中突出显示文本时,它一直失败并显示以下日志。
Optional(Error Domain=WKErrorDomain Code=4 "A JavaScript exception occurred" UserInfo={WKJavaScriptExceptionLineNumber=0, WKJavaScriptExceptionMessage=TypeError: undefined is not a function, WKJavaScriptExceptionColumnNumber=0, NSLocalizedDescription=A JavaScript exception occurred})
在 func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!)
中,我添加了以下行
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + Double(Int64(0.3 * Double(NSEC_PER_SEC))) / Double(NSEC_PER_SEC)) {() -> Void in
webView.evaluateJavaScript("uiWebview_HighlightAllOccurencesOfString(\"a\")", completionHandler: { (returnVal: Any?, error: Error?) -> Void in
print(error)
})
}
它没有突出显示文本。我在这里错过了什么?
function uiWebview_HighlightAllOccurencesOfString(keyword)
在js文件里
有什么建议吗?
试试这个:
webView.evaluateJavaScript("this.uiWebview_HighlightAllOccurencesOfString(\"a\");"...
只需在js代码末尾添加this.
和;
希望对您有所帮助
问题是,用户脚本没有正确添加。
let userContentController = WKUserContentController()
userContentController.add(messageHandler, name: "jsBridge")
let audioString = Bundle.main.url(forResource: "GetAudioLinks", withExtension: "js", subdirectory:"/Assets/js/" )
let audioStringScript = WKUserScript(source: audioString, injectionTime: .atDocumentEnd, forMainFrameOnly: true)
userContentController.addUserScript(audioStringScript)
现在,它工作正常。