С помощью iOS / Swift я хочу подключиться к существующему веб-сайту.
Поскольку я снова вхожу в разработку iOS, я обнаружил, что существует два метода введения JS / Java Скрипт на существующей веб-странице: WKUserContentController.addUserScript
и WKWebView.evaluateJavaScript
Я не уверен, какой метод предпочтительнее - но мне удалось с WKWebView.evaluateJavaScript
Так что теперь я введите следующий код (так как я получил ошибку, я окружил ее try-catch, чтобы увидеть, что не так в JS)
let callBackFunction = "window.webkit.messageHandlers." + scriptMessageHandlerName + ".postMessage(message);"
var buttonScript = "var message = '" + buttonClickedMessage + "'; \n"
buttonScript += "try { $('#dialog').next().find('button:first').bind('click', function() { " + callBackFunction + " }); \n"
buttonScript += "} catch (err) { message = err; } ; \n"
Выводится следующая ошибка:
Optional(Error Domain=WKErrorDomain Code=5 "JavaScript execution returned a result of an unsupported type" UserInfo={NSLocalizedDescription=JavaScript execution returned a result of an unsupported type})
Удивительно, добавив следующую строку, ошибка больше не возникает
buttonScript += callBackFunction
Также я заметил, что, хотя я получаю сообщение об ошибке выше, метод приемника вызывается при нажатии указанной кнопки
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
Итак, вопрос в том, что вызывает webView.evaluateJavaScript
заполненный объект ошибки ??
webView.evaluateJavaScript(buttonScript,
completionHandler: { (result, error) -> Void in
if error != nil {
print("Error occured - unable to add event to button")
print(error)
print(result)
} else {
print("successfully added event to button")
}
})