[webkit-help] Calling JS Function From C

demallien demallien at me.com
Thu Jan 27 07:59:11 PST 2011


Nimish,

The first thing you need to do is get a reference to the Javascript function that you want to call.  This is the order of things you have to do:

Get the Javascript context in which your function has been defined.  I haven't played around with WinLauncher, but in GtkLauncher it is obtained by using:
frame = webkit_web_view_get_main_frame (web_view);
context = webkit_web_frame_get_global_context(frame);

I would imagine WinLauncher is similar...

Once you have the context, assuming that your Javascript function is defined globally, you will need to get the context's global object:

JSObjectRef globalObject = JSContextGetGlobalObject(context);

Once you have the global object, you will need a JSStringRef containing the name of the global function that you wish to call.  So, if you have declared the Javascript function as follows:

function my_function()
{
//do something
}
you should create a string "my_function" as follows:
    JSStringRef     myFunctionName = JSStringCreateWithUTF8CString("my_function");

Now you can get the property of the global object with the name "my_function":
JSObjectRef functionObject = (JSObjectRef)JSObjectGetProperty(context, globalObject, myFunctionName, NULL);

functionObject now contains a reference to your Javascript function, and can be called as follows (I'm going to make an example where my_function takes two numbers as arguments):

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);

I hope that helps.

Allison Newman


On 27 Jan, 2011,at 04:00 PM, webkit-help-request at lists.webkit.org wrote:

Send webkit-help mailing list submissions to
webkit-help at lists.webkit.org

To subscribe or unsubscribe via the World Wide Web, visit
http://lists.webkit.org/mailman/listinfo.cgi/webkit-help
or, via email, send a message with subject or body 'help' to
webkit-help-request at lists.webkit.org

You can reach the person managing the list at
webkit-help-owner at lists.webkit.org

When replying, please edit your Subject line so it is more specific
than "Re: Contents of webkit-help digest..."


Today's Topics:

1. Calling JS Function From C (Nimish Nayak)


----------------------------------------------------------------------

Message: 1
Date: Thu, 27 Jan 2011 14:55:55 +0530
From: Nimish Nayak <nimishnayk at gmail.com>
To: webkit-help at lists.webkit.org
Subject: [webkit-help] Calling JS Function From C
Message-ID:
<AANLkTimXy5j10Xbu24C37HPcGhPPQ45P_nP7pbh=hzMi at mail.gmail.com>
Content-Type: text/plain; charset="iso-8859-1"

Hi all

In WinLauncher the WebFrameLoadDelegate Interface has already been
implemented.In the function didClearWindowObject I called my own function
where I Make a function with a call back set it as the property and call a C
function from JS But how can i call a JS function from C.
I was reading online i saw JSObjectGetProperty and JSObjectCallAsFunction
but I am not able to understand the parameters well of both these functions
is ther a way i can get this done.?

-- 
Mr. Nimish Nayak
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-help/attachments/20110127/d239a0b6/attachment-0001.html>

------------------------------

_______________________________________________
webkit-help mailing list
webkit-help at lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-help


End of webkit-help Digest, Vol 19, Issue 18
*******************************************
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-help/attachments/20110127/d3d6e29c/attachment.html>


More information about the webkit-help mailing list