Отправка сообщения в WKWebView выдает ошибку - PullRequest
1 голос
/ 30 сентября 2019

Я использую WKWebView для загрузки HTML во всплывающем окне расширения приложения Safari. Я пытаюсь отправить сообщение на эту страницу, используя 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())
    }     
}

Я пытался проверить ошибку в завершение, но это не происходит. Есть идеи?

1 Ответ

1 голос
/ 08 октября 2019

Я полагаю, что вам нужно использовать основной поток для выполнения JS в webView. Попробуйте перевести звонок на webView.evaluateJavaScript() в DispatchQueue.main.async { }.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...