JavaScriptCore C API

## C++ webkit调用javascript (2)

2019-12-26  本文已影响0人  红凉梦

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);
上一篇下一篇

猜你喜欢

热点阅读