【问题标题】:Sending message to WKWebView throws error向 WKWebView 发送消息会引发错误
【发布时间】:2019-10-09 02:02:39
【问题描述】:

我正在使用 WKWebView 在我的 Safari 应用程序扩展的弹出窗口中加载 HTML。我正在尝试使用webView.evaluateJavaScript("myFunction()") 向此页面发送消息,但它失败并显示错误消息EXC_BREAKPOINT (code=EXC_I386_BPT, subcode=0x0)

我认为该页面最初没有加载到 webView 中,因此会引发此错误,但这里不是这种情况。该页面完全加载,但由于某种原因我收到此错误。这是我的代码。

@IBOutlet var webView: WKWebView!

func webView(_ webView: WKWebView,didFinish navigation: WKNavigation!) {
     webView.evaluateJavaScript("myFunction()", completionHandler: nil)   
}

override func viewDidLoad() {
    super.viewDidLoad()
    webView.configuration.userContentController.add(self, name: "popup")
    webView.configuration.userContentController.add(self, name: "print")
    webView.navigationDelegate = self
    view.addSubview(webView!)
    self.view = webView

    if let url = Bundle.main.url(forResource: "MyPopup", withExtension: "html") {
        webView.loadFileURL(url, allowingReadAccessTo: url.deletingLastPathComponent())
    }     
}

我尝试在 completionHandler 中检查错误,但它没有出现。有什么想法吗?

【问题讨论】:

    标签: ios swift xcode wkwebview safari-app-extension


    【解决方案1】:

    我相信你需要使用主线程在webView中执行JS。尝试将对webView.evaluateJavaScript() 的调用封装在DispatchQueue.main.async { } 中。

    【讨论】:

    • 这就是我在代码中的做法。工作。
    猜你喜欢
    • 1970-01-01
    • 2012-10-12
    • 2013-11-16
    • 2018-03-08
    • 2021-06-15
    • 1970-01-01
    • 1970-01-01
    • 2019-01-26
    • 1970-01-01
    相关资源
    最近更新 更多