3

I am trying to load a external library via JavaScriptCore

Specifically I want the end result of this:

<script src="fancyLibrary.js" type="text/javascript"></script>

But with the syntax of this:

JSContext *context = [[JSContext alloc] initWithVirtualMachine:[[JSVirtualMachine alloc] init]];
[context loadExternalJavascriptFileWithName:@"fancyLibrary.js"];

JSValue *fancyFunction = context[@"fancy"];

Is this possible at the current time? I figure I can include the external library in the app bundle and call it from there. It's a matter of loading the library into the context.

Cezar
  • 690
  • 1
  • 8
  • 17

1 Answers1

6

You just need to use the evaluation API to load the contents of the script in the context. This is actually pretty close to what a browser does when it encounters a script tag.

NSURL *scriptURL = [NSURL URLWithString:@"path/to/fancyLibrary.js"];
NSError *error = nil;
NSString *script = [NSString stringWithContentsOfURL:scriptURL encoding:NSUTF8StringEncoding error:&error];
[context evaluateScript:script];
Tayschrenn
  • 1,202
  • 10
  • 11