You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WKWebView.evaluateJavaScript方法无法正常工作的问题求助

WKWebView.evaluateJavaScript方法无法正常工作的问题求助

我现在在做一个调研类的需求,需要通过.evaluateJavaScript来手动触发网页里的按钮点击。逻辑是收到外部消息时调用对应的JS函数(代码我做了精简)。现在其他功能都正常,唯独调用evaluateJavaScript没效果,实在搞不懂哪里出问题了。

情况是这样的:如果我把这段JS代码放在webView(_:didFinish:)方法里执行,比如下面这段代码,完全能正常工作,说明JS语法本身肯定没问题:

func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
    setupButtonScripts(webView: webView)
}

但我把JS调用放在消息回调里就不行了,虽然最后面的print("ran this function")能正常输出,说明这个方法确实被执行了,但网页里的按钮就是没反应。我的相关代码如下:

init(_ parent: WebViewWrapper) {
    self.parent = parent
    self.webView = WKWebView() // Initialize the webView property
    self.messageHandler = MessageHandler(address: my ipad, port: ___)
    super.init()

    messageHandler.messageReceivedHandler = { [weak self] message in
        DispatchQueue.main.async {
            self?.handleButtonActionForMessage(message, webView: self?.webView ?? WKWebView())
        }
    }
}

func handleButtonActionForMessage(_ message: String, webView: WKWebView) {
    switch message {
    case "one":
        let script = """
        var answer1 = document.getElementById("ANSWER_1");
        if (answer1) {
            answer1.click();
        }
        """
        webView.evaluateJavaScript(script, completionHandler: nil)
        print("ran this function")
    default:
        break
    }
}

有没有大佬能帮我分析下这是咋回事啊?

备注:内容来源于stack exchange,提问作者user22014972

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 15:19:39