在 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;
}
我想从我的视图控制器之一调用 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;
}