JavaScriptCore console.log

JavaScriptCore console.log,第1张

概述我整理了一个非常简单的程序,它使用JavaScriptCore来评估JS: #import <CoreFoundation/CoreFoundation.h>#import <JavaScriptCore/JavaScriptCore.h>int main(int argc, const char * argv[]){ JSGlobalContextRef ctx = JSGlob 我整理了一个非常简单的程序,它使用JavaScriptCore来评估Js:

#import <CoreFoundation/CoreFoundation.h>#import <JavaScriptCore/JavaScriptCore.h>int main(int argc,const char * argv[]){    JsGlobalContextRef ctx = JsGlobalContextCreate(NulL);    file *f = fopen(argv[1],"r");    char * buffer = malloc(10000000);    fread(buffer,1,10000000,f);    CFStringRef strs = CFStringCreateWithCString(NulL,buffer,kcfStringEnCodingASCII);    JsstringRef jsstr = JsstringCreateWithCFString(strs);    JsValueRef result = JsEvaluateScript(ctx,jsstr,NulL,NulL);    double res  = JsValuetoNumber(ctx,result,NulL);    JsGlobalContextRelease(ctx);    printf("%lf\n",res);    return 0;}

这里的想法是最后一个值应该是一个数字,并打印该值.这适用于有效的JavaScript代码,例如

var square = function(x) { return x*x; }; square(4)

但是,如果代码尝试执行console.log,则程序会出现段错误. JsC中是否有可用的日志功能,还是我必须自己滚动?

解决方法 如果使用Mac或IOS的JavaScriptCore框架,则必须提供自己的控制台日志.

这里有一些代码对我有用(对不起,根据你上面的代码,它是Objective-C而不是标准C):

jscontext *JavaScriptContext  = [[jscontext alloc] init];JavaScriptContext[@"consoleLog"] = ^(Nsstring *message) {    NSLog(@"JavaScript log: %@",message);};

然后你从JavaScript使用它:

consoleLog("My deBUG message");

请注意,我已经尝试定义了一个vararg版本(记录了多个参数),但我无法在框架API中正常工作.

请注意,此解决方案使用随新的Objective-C API引入的功能,用于与IOS 7同时引入的JavaScriptCore.framework.如果您正在寻找Objective-C和JavaScript之间这个良好集成的桥梁的介绍,请查看2013年WWDC在Apple开发者网络上推出的“将JavaScript集成到本机应用程序”会话:https://developer.apple.com/videos/wwdc/2013/?id=615

更新回答:

对于那些想要在不进行重构的情况下最大化JavaScript代码重用的人,我设法得到一个版本工作,声明了console.log()形式的日志:

jscontext *JavaScriptContext  = [[jscontext alloc] init];[JavaScriptContext evaluateScript:@"var console = {}"];JavaScriptContext[@"console"][@"log"] = ^(Nsstring *message) {    NSLog(@"JavaScript log: %@",message);};

然后你从JavaScript使用它:

console.log("My deBUG message");
总结

以上是内存溢出为你收集整理的JavaScriptCore console.log全部内容,希望文章能够帮你解决JavaScriptCore console.log所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1066865.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-26
下一篇2022-05-26

发表评论

登录后才能评论

评论列表(0条)

    保存