以下是示例: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)}
};
答案 0 :(得分:0)
您使用了错误的JSContext。
在您的代码中,您正在初始化新的JSContext。相反,您想从文档中获取JSContext,该文档已在webView中加载:var context = (JSContext)webView.ValueForKeyPath((NSString)"documentView.webView.mainFrame.javaScriptContext");
答案 1 :(得分:0)