在 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)

现在,它工作正常。