gpt4 book ai didi

javascript - 如何使用 JavaScriptCore 框架执行 JavaScript?

转载 作者:行者123 更新时间:2023-11-30 18:34:02 24 4
gpt4 key购买 nike

我已经实现了以下代码来执行 Jasmine Test 的 JavaScript 文件框架。

NSMutableArray * fArr = [[NSBundle mainBundle] pathsForResourcesOfType:@"js" inDirectory:@"scripts/JS_TestFramework/lib/jasmine-1.1.0"];
NSMutableString *fullFrameworkScript = nil;
NSString *script;

for (int i = fArr.count-1; i >= 0; i--)
{
NSMutableString* filePath = [fArr objectAtIndex:i];

fullFrameworkScript = [NSMutableString string];

NSError* error;

script = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:&error];

if(script)
{
[fullFrameworkScript appendString:script];
}
}
JSValueRef result;
if(fullFrameworkScript)
{
JSStringRef scriptJS = JSStringCreateWithCFString(fullFrameworkScript);

JSValueRef exception = NULL;

result = JSEvaluateScript(context, scriptJS, NULL, NULL, 1, &exception);

if(exception)
{
[self logException:exception];
exception = NULL;
}

JSStringRelease(scriptJS);
}

JSStringRef step1 = JSStringCreateWithCFString(@"jasmine.getEnv().addReporter(new jasmine.TrivialReporter())");

JSValueRef exception = NULL;

JSObjectRef fn = JSObjectMakeFunction(context, step1, 0, NULL, JSStringCreateWithCFString(script), NULL, 0, NULL);
result = JSObjectCallAsFunction(context, fn, NULL, 0, NULL, &exception);

if(exception)
{
[self logException:exception];
exception = NULL;
}

JSStringRelease(step1);

[MTPScriptExecutionContext removeAllObjects];

JSStringRef htmlResult = JSValueToStringCopy(context, result, NULL);

NSString *htmlData = [NSMakeCollectable(JSStringCopyCFString(kCFAllocatorDefault, htmlResult)) autorelease];

JSStringRelease(htmlResult);

return htmlData;

这是我的函数,它返回 HTML 数据...当我执行脚本时,我在异常时遇到以下错误:

Exception = Can't find variable: jasmine

尽管我的脚本在第一行声明了 jasmine 变量。上面的代码还有什么问题????他们还有其他执行 JavaScript 的方式吗??

还有一个问题:JavaScriptCore 框架是否支持 DOM 和 HTML 的其他功能?

最佳答案

对于你的第二个问题,JavaScriptCore 不支持 DOM 和其他 HTML 相关的东西。它是一个实现 ECMA 262(?) 规范的最小引擎。 DOM 支持在作为 WebKit 一部分的 WebCore 中实现。

如果您想进行 headless JavaScript/DOM 测试,请使用 PhantomJS

关于javascript - 如何使用 JavaScriptCore 框架执行 JavaScript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8798956/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com