ios - 向 WKWebView 发送消息会引发错误
问题描述
我正在使用 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 中检查错误,但它没有去那里。有任何想法吗?
解决方案
我相信你需要使用主线程在 webView 中执行 JS。尝试包装对webView.evaluateJavaScript()
in的调用DispatchQueue.main.async { }
。
推荐阅读
- azure - Azure 备份,应用设置中的连接字符串会导致现有应用出现问题吗?
- apache-zookeeper - 在 Heron 集群中发生 Zookeeper EndOfStreamException
- javascript - 根据最宽选项选择2宽度?
- zeromq - 使用 ZeroMQ STREAM 套接字检测套接字连接
- python - 使用拆分功能时出现 IndexError
- jquery - 多个提交按钮以在 cakephp 3.x 的索引页面中提交表单
- ruby - Httparty - 附加到 url 并添加标头以通过 Ruby 类获取请求
- swift - 领域惰性结果类型擦除
- java - if/while 语句不执行 (java)
- javascript - 如何使用 web3 获取列表交易详情?