如之前所說。如果你有一段 Javascript 是這樣:
function x(x) {
return x + 1;
}
用 ObjeC controller 要 webView 產生上面那段 Javascript code,會是這樣:
WebScriptObject *obj = [webView windowScriptObject];
NSString *s = @"function x(x) { return x + 1};";
[obj evaluateWebScript:s];
非常想不開的話,你會寫成這樣:
#import <JavaScriptCore/JavaScript.h>
JSGlobalContextRef ctx = [[webView mainFrame] globalContext];
JSStringRef xName = JSStringCreateWithUTF8CString("x");
JSStringRef parameters0 = JSStringCreateWithUTF8CString("x");
JSStringRef parameters[1] = {parameters0};
JSStringRef body = JSStringCreateWithUTF8CString("return x + 1");
JSObjectRef x = JSObjectMakeFunction(ctx, xName, 1, parameters, body, NULL, 0, NULL);
JSStringRelease(xName);
JSStringRelease(parameters0);
JSStringRelease(body);
JSValueRef argument0 = JSValueMakeNumber(ctx, 1);
JSValueRef arguments[1] = {argument0};
JSValueRef result = JSObjectCallAsFunction(ctx, x, NULL, 1, arguments, NULL);
double r = JSValueToNumber(ctx, result, NULL);
NSLog(@"r:%f", r);




