2015-06-30 6 views
-1

Я хочу, чтобы вызвать функцию яваскрипта от одного моего вида класса контроллера,Вызов JavaScript из класса UIViewController в прошивкой

вот мой фрагмент кода я попробовал, но он не работает :(

кода в моем 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 Пожалуйста, помогите и спасибо заранее!

+0

вы проверили JS каталог в вашем пачке? Из ваших ошибок это звучит не так. –

+0

также попробовал 'NSString * path = [[NSBundle mainBundle] pathForResource: @" app "ofType: @" js "inDirectory: @" js "];' он возвращает путь теперь вместо nil, но функция javascript не получает вызов :( – Krunal

+0

Добавьте некоторые отладочные инструкции NSLog для каждой строки кода и опубликуйте его. В противном случае трудно понять, что происходит не так. Кроме того, зависит приложение app.js от другого javascript. В таком случае вам придется сначала загрузить всю поддержку, необходимую ему? –

ответ

1

Я думаю, вы должны изменить порядок код:

1) Во-первых, вы должны оценить сценарий:

[context evaluateScript: [self loadJsFromFile]]; 

2) Затем получить имя функции из контекста

JSValue *function = context[@"ProfilePicFunction"]; 
+0

Пробовал не работать :(пожалуйста, помогите – Krunal

+0

мой NSLog показывает 'result = undefined' – Krunal

+0

вы не получите результат, потому что вы ничего не возвращаете из метода, я думаю, что это может help: http://hayageek.com/execute-javascript-in-ios/ ... вы можете изменить реализацию метода для суммирования операции, например, и проверить правильность кода JS или нет. –

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