[英]Call JavaScript function from UIViewController class in iOS
我想從我的視圖控制器類之一調用 javascript 函數,
這是我嘗試過的代碼片段,但它不起作用:(
我的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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.