在 iOS 中从 UIViewController class 调用 JavaScript 函数

Call JavaScript function from UIViewController class in iOS

我想从我的视图控制器之一调用 javascript 函数 class,

这是我试过的代码片段,但它不起作用:(

我的代码 ViewController

- (NSString *)MyMehtod{
    JSContext *context = [[JSContext alloc] init];
    JSValue *function = context[@"ProfilePicFunction"];
  [context evaluateScript: [self loadJsFromFile]]; //crashes here EXC_BAD_ACESS
     JSValue* result = [function callWithArguments:@[[documentsDirectory stringByAppendingString:@"/ProfilePic.png"]]];
    NSLog(@"result = %@",result);
}

- (NSString *)loadJsFromFile
    {
        NSString *path = [[NSBundle mainBundle] pathForResource:@"app" ofType:@"js"]; //path returns here as nil
        NSString *jsScript = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil]; //jsScript returns here as nil
        return jsScript;
    }

app.js 文件中的代码

function ProfilePicFunction(ProfilePicPath){
     var d= new Date();

    var userFullPath = ProfilePicPath+"?"+d.getTime();

    $("#userImg").attr("src",userFullPath);
}

app.js 的位置 请提前帮助并感谢!!

我认为您应该更改代码的顺序:

1) 首先你要评估脚本:

[context evaluateScript: [self loadJsFromFile]];

2) 然后从上下文中获取函数名

JSValue *function = context[@"ProfilePicFunction"];
- (NSString *)loadJsFromFile{
     NSString* js = [[NSString alloc] initWithData:[NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"app" ofType:@"js"]] encoding:NSUTF8StringEncoding];
     return js;
}