【发布时间】:2015-06-30 08:53:23
【问题描述】:
我想从我的视图控制器类之一调用 javascript 函数,
这是我尝试过的代码 sn-p,但它不起作用:(
代码在我的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的位置
请提前帮助和感谢!!
【问题讨论】:
-
你检查过 js 目录在你的包里吗?从您的错误来看,这听起来不像。
-
也试过
NSString *path = [[NSBundle mainBundle] pathForResource:@"app" ofType:@"js" inDirectory:@"js"];它现在返回路径而不是nil但是javascript函数没有被调用:( -
为每一行代码添加一些调试NSLog语句并贴出来。否则很难知道出了什么问题。此外,app.js 是否依赖于其他 javascript。如果是这样,您必须先加载它需要的所有支持?
-
我觉得你可能是这里的跟踪方式。 app.js 正在运行 jquery 代码。您将需要一个 JSContext 到 UIWebView 或其他 JSVirtualMachine 上,其中加载的网页已拉入 jquery 以及您要操作的任何 DOM?
标签: javascript ios objective-c iphone ipad