簡體   English   中英

從 iOS 中的 UIViewController 類調用 JavaScript 函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM