Я просто создаю свое приложение с WKWebView с swift 4.0 (iOS 12.1)
Мне нужно запустить мой javascript из онлайн-HTML,
Однако если я переместить URL-адрес из индекса на другую страницу,
мое печатное сообщение не работает вообще.
let contentController = WKUserContentController()
contentController.add(self, name: "myHandler")
let configuration = WKWebViewConfiguration()
configuration.userContentController = contentController
webview = WKWebView(frame: self.view.frame, configuration: configuration)
webview.uiDelegate = self
webview.navigationDelegate = self
self.view = self.webview
override func viewDidLoad() {
super.viewDidLoad()
let url = URL(string: "example.com/index") // of course https://
let request = URLRequest(url: url!)
webview.load(request)
Я пропустил userContentController при переходе на другую html-страницу в webView. Индексная страница может вызывать эту, но другая страница не вызывает никакой функции.
index.html (ok) -> ссылка на a.html -> a.html (не в порядке) -> ссылка на index.html -> index.html (ok)
Не называйте это:
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
print("call print out")
if message.name == "myHandler" {
print("JS -> Native Call \(message.body)")
abc()
} else {
print("JS -> Native N/A")
}
}
Я не могу получить ни одного сообщения, даже "распечатать звонок" вообще.
Как я могу активировать userContentController в моем коде?