WKNavigationDelegate使用Objective-C Bridge(JXA)

时间:2015-08-18 22:34:29

标签: javascript-automation jxa

我正在尝试为WKWebView创建WKNavigationDelegate,但无法调用decisionHandler。有谁知道如何做到这一点?

ObjC.registerSubclass({
    name: "test",
    methods: {
        "webView:decidePolicyForNavigationAction:decisionHandler:": {
             types: ["void", ["id", "id", "id"]],
             implementation: function(wv, navigationAction, decisionHandler) {
                 decisionHandler($.WKNavigationActionPolicyAllow);
                 return;
            }
        }
    }
});
var delegate = $['test'].alloc.init;
webView.navigationDelegate = delegate;

代码可以阻止导航操作,但不会调用decisionHandler

在控制台中我得到了日志:

Completion handler passed to -[test webView:decidePolicyForNavigationAction:decisionHandler:] was not called

将类型从“id”更改为“block”或“function”不起作用。

1 个答案:

答案 0 :(得分:1)

我会添加一条评论,但令人困惑的SO规则禁止回答(?!)的新手。是否在注册帮助中添加protocols: ['WKNavigationDelegate']? 正在调用您的方法,并且$ .WKNavigationActionPolicyAllow显示为== 1,但协议可能会帮助JSC进行类型推断。