为了账号安全,请及时绑定邮箱和手机立即绑定

Xamarin IOS 无法在 JavascriptCore 中绑定函数或回调

Xamarin IOS 无法在 JavascriptCore 中绑定函数或回调

C#
慕田峪9158850 2021-11-21 15:38:26
按照这里的例子:JSContext我收到以下异常:{TypeError: myCSharpObject.myFunc is not a function. (In 'myCSharpObject.myFunc()', 'myCSharpObject.myFunc' is undefined)} 我的代码如下:        JSContext _context;        _context = new JSContext();        var jsCallback = new MyJSExporter();        _context[(NSString)"myCSharpObject"] = JSValue.From(jsCallback, _context);        var result = _context.EvaluateScript("myCSharpObject.myFunc();");协议定义为:[Protocol]    interface IMyJSVisibleProtocol : IJSExport    {        [Export("myFunc")]        int MyFunc();        [Export("Arity2:With:")]        NSObject Arity2With(NSObject arg1, NSObject arg2);    }    class MyJSExporter : NSObject, IMyJSVisibleProtocol    {        public int MyFunc()        {            Console.WriteLine("Called!");            return 42;        }        public NSObject Arity2With(NSObject arg1, NSObject arg2)        {            Console.WriteLine("Arity 2 function called with " + arg1 + " " + arg2);            return (NSNumber)42;        }    }异常处理程序为:       _context.ExceptionHandler = (context, exception) => {            // {TypeError: myCSharpObject.myFunc is not a function. (In 'myCSharpObject.myFunc()', 'myCSharpObject.myFunc' is undefined)}        };
查看完整描述

2 回答

?
慕工程0101907

TA贡献1887条经验 获得超5个赞

最终为我解决这个问题的是添加 build mtouch 参数:

'--注册器:静态'

//img1.sycdn.imooc.com//6199f78f00012a9509750714.jpg

查看完整回答
反对 回复 2021-11-21
?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

您使用了错误的 JSContext。在您的代码中,您正在初始化新的 JSContext。相反,您希望从您在 webView 中加载的文档中获取 JSContext :var context = (JSContext)webView.ValueForKeyPath((NSString)"documentView.webView.mainFrame.javaScriptContext");

这是完全工作的测试视图控制器!


查看完整回答
反对 回复 2021-11-21
  • 2 回答
  • 0 关注
  • 220 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信