Tôi đang cố gắng xử lý trình xử lý tin nhắn tập lệnh WebKit tùy chỉnh. Bộ điều khiển của tôi được tải chính xác và chế độ xem là tốt. Tuy nhiên, ở phía JS (từ bảng điều khiển Safari), window.webkit.messageHandlers
trống. Bất kỳ ý tưởng tại sao? Ứng dụng của tôi đang sử dụng iOS 8.1 nhưng thậm chí bằng cách nâng cấp lên 9.2, ứng dụng đó không hoạt động.Trình xử lý tin nhắn tập lệnh không hoạt động
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, cảm ơn vì câu trả lời của bạn. Tôi biết 'messageHandlers' là một đối tượng. Nhưng nó không có chìa khóa ở tất cả, và đặc biệt là 'foo' là mất tích. –
Mã nhanh chóng của bạn hoạt động tốt cho tôi. Bạn có thể đăng bài như thế nào bạn đang gọi xử lý tin nhắn của bạn hoặc kiểm tra sự tồn tại của "foo"? – Onato
Arf. Chỉ cần kiểm tra lại và nó hoạt động tốt. Xin lỗi vì sự nhầm lẫn. Tuy nhiên, tôi có một vấn đề khác ngay bây giờ. Tôi không thể đăng bất kỳ dữ liệu tùy chỉnh nào. Tôi đã cố gắng để đăng một từ điển với 2 chuỗi và một từ điển khác và cơ thể tôi nhận được chỉ bao gồm một chuỗi duy nhất. Không phải là một vấn đề lớn, nhưng bạn có biết gì về điều đó không? –