Ich versuche, einen benutzerdefinierten WebKit-Skript-Meldungshandler zu injizieren. Mein Controller ist korrekt geladen und auch die Ansicht. Auf der JS-Seite (von der Safari-Konsole aus) ist window.webkit.messageHandlers
jedoch leer. Irgendeine Idee warum? Meine App verwendet iOS 8.1, aber selbst beim Aktualisieren auf 9.2 hat es nicht funktioniert.Script-Meldungshandler funktioniert nicht
import Foundation
import UIKit
import WebKit
public class FooController: UIViewController, WKScriptMessageHandler {
private var wkWebView: WKWebView?
public override func viewDidLoad() {
super.viewDidLoad()
let o = WKUserContentController()
o.addScriptMessageHandler(self, name: "foo")
let config = WKWebViewConfiguration()
config.userContentController = o
self.wkWebView = WKWebView(frame: self.view.bounds, configuration: config)
self.view.addSubview(self.wkWebView!)
self.wkWebView!.loadRequest(NSURLRequest(URL: NSBundle.mainBundle().URLForResource("foo", withExtension: "html")!))
}
public func userContentController(userContentController: WKUserContentController, didReceiveScriptMessage message: WKScriptMessage) {
print("foo")
}
}
Hey onato dank nicht aufrufen. Ich weiß, dass 'messageHandlers' ein Objekt ist. Aber es hat überhaupt keinen Schlüssel und vor allem fehlt 'foo'. –
Ihr schneller Code funktionierte gut für mich. Können Sie posten, wie Sie Ihren Message-Handler aufrufen oder nach dem Vorhandensein von "foo" suchen? – Onato
Arf. Nur noch einmal getestet und es funktioniert gut. Entschuldigung für die Verwirrung. Allerdings habe ich jetzt ein anderes Problem. Ich kann keine benutzerdefinierten Daten posten. Ich habe versucht, ein Wörterbuch mit 2 Zeichenfolgen und einem anderen Wörterbuch zu veröffentlichen, und der Körper, den ich erhielt, enthielt nur eine einzelne Zeichenfolge. Keine große Sache, aber wissen Sie etwas darüber? –