gpt4 book ai didi

ios - 脚本消息处理程序不工作

转载 作者:搜寻专家 更新时间:2023-10-30 21:56:52 25 4
gpt4 key购买 nike

我正在尝试注入(inject)自定义 WebKit 脚本消息处理程序。我的 Controller 已正确加载, View 也已正确加载。然而,在 JS 端(从 Safari 控制台),window.webkit.messageHandlers 是空的。知道为什么吗?我的应用程序使用的是 iOS 8.1,但即使升级到 9.2,它也无法运行。

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")
}
}

最佳答案

webkit.messageHandlers 不是数组。它是一个 UserMessageHandlersNamespace

尝试

var message = {"key1":"value1", "key2":"value2", "dictionary": {"name": "foo"}}
webkit.messageHandlers.foo.postMessage(message);

在您的消息处理程序中。

public func userContentController(userContentController: WKUserContentController, didReceiveScriptMessage message: WKScriptMessage) {
let body = message.body
if let dict = body as? Dictionary<String, AnyObject> {
print(dict)
}
}

关于ios - 脚本消息处理程序不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34733678/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com