我有这样的 JavaScript 函数。
function getState(){
return "Hello";
}
var cryptico = (function() {
var my = {};
my.generateRSAKey = function(passphrase, bitlength)
{
Math.seedrandom(sha256.hex(passphrase));
var rsa = new RSAKey();
rsa.generate(bitlength, "03");
return rsa;
}
}());
如果函数在外部,我可以像这样轻松调用。
NSString *jsPath = [[NSBundle mainBundle] pathForResource:@"cryptico" ofType:@"js"];
NSString *scriptString = [NSString stringWithContentsOfFile:jsPath encoding:NSUTF8StringEncoding error:nil];
JSContext *context = [[JSContext alloc] init];
context = [[JSContext alloc] init];
[context evaluateScript:scriptString];
JSValue *test10 = context[@"getState"];
JSValue *test11 = [test10 callWithArguments:@[]]; //will be Hello
但是我怎样才能调用变量内部的东西呢?我尝试了很多不同的方法,但都不行。
最佳答案
根据 JSValue Apple 文档:
Objective-C block (Swift clousre) 和 javascript 函数应使用
相互转换valueWithObject:inContext:
转换为 JSValue,就像您在代码中所做的那样,并且
toObject
转换为其实际类型,在本例中为 block 。所以先尝试一下
[test10 toObject];
并存储到一个 block ,然后正常调用该 block
关于javascript - 从原生 ios 代码调用 javascript 函数(位于参数中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44927668/