C++ webkit调用javascript
要在c++代码中调用Javascript函数,首先要做的是得到需要调用的Javascript函数的引用。
第一步:得到定义了该函数的Javascript context。
第二步:到这个context的全局对象global object,假定你定义的Javascript函数是全局的
JSObjectRef globalObject = JSContextGetGlobalObject(context);
得到这个全局对象之后,需要一个包含待调用的全局函数名的js字符引用对象 JSStringRef 。假定 Javascript函数my_function声明如下:
function my_function(a,b)
{
//do something
alert(a+b);
}
第三步:得到Javascript函数“my_function”的引用
首先创建一个字符串my_function:
JSStringRef myFunctionName = JSStringCreateWithUTF8CString("my_function");
然后用"my_function"这个函数名称从全局对象的属性中得到这个函数的引用functionObject。
JSObjectRef functionObject = (JSObjectRef)JSObjectGetProperty(context, globalObject, myFunctionName, NULL);
第四步:调用javascript函数
下面的示例中,假设全局javascript函数my_function包含两个数值类型的参数:
JSValueRef arguments[2];
JSValueRef result;
int num_arguments = 2;
arguments[0] = JSValueMakeNumber(context, 1.0);
arguments[1] = JSValueMakeNumber(context, 3.14);
result = JSObjectCallAsFunction(context, functionObject, globalObject, num_arguments, arguments, NULL);