【问题标题】:WKNavigationDelegate using Objective-C Bridge (JXA)WKNavigationDelegate 使用 Objective-C Bridge (JXA)
【发布时间】:2015-08-18 22:34:29
【问题描述】:

我正在尝试为 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”不起作用。

【问题讨论】:

    标签: javascript-automation


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多