My favorites | Sign in
Project Home Downloads Wiki Issues Source
Search
for
CallingJSFromObjC  
Updated Feb 4, 2010 by parman...@gmail.com

Evaling whole files

  • evalJSFile: returns BOOL
  • evalJSFile:toJSValueRef: returns BOOL and the Javascript return value (JSValueRef)

Evaling a string

  • evalJSString: returns a JSValueRef

Calling a Javascript function

  • hasJSFunctionNamed: check if function exists
  • callJSFunctionNamed:withArguments:... calls a Javascript function by name. Uses variadic arguments (Just like NSArray arrayWithObjects, requires nil` termination)
  • callJSFunction:withArguments: calls a Javascript function referenced by a JSValueRef (result of getting a function with JSObjectGetProperty or JSEvaluateScript creating an anonymous function). Uses an array argument

Unboxing results

These functions return raw Javascript values (JSValueRef). If you want to get an ObjC out of them, you'll need to unbox it with

NSObject* objectFromJavascript = nil;
if (![JSCocoaFFIArgument unboxJSValueRef:jsValueRef toObject:&objectFromJavascript inContext:ctx])
{
  // Object was not unboxed correctly
  return ...
}
// Use object

If you expect Javascript values such as Boolean or Number or String, you can use JavascriptCore functions like JSValueToNumber or fromJSValueRef :

+ (BOOL)fromJSValueRef:(JSValueRef)value inContext:(JSContextRef)ctx withTypeEncoding:(char)typeEncoding withStructureTypeEncoding:(NSString*)structureTypeEncoding fromStorage:(void*)ptr;

This function will convert a JSValueRef in a raw C value. Check its source for details.


Sign in to add a comment
Powered by Google Project Hosting