Register a new V8 extension with the specified JavaScript extension code and handler.
Functions implemented by the handler are prototyped using the keyword 'native'. The calling of a native function is restricted to the scope in which the prototype of the native function is defined. This function may only be called on the render process main thread.
Example JavaScript extension code:
// create the 'example' global object if it doesn't already exist.
if (!example)
example = {};
// create the 'example.test' global object if it doesn't already exist.
if (!example.test)
example.test = {};
(function() {
// Define the function 'example.test.myfunction'.
example.test.myfunction = function() {
// Call CefV8Handler::Execute() with the function name 'MyFunction'
// and no arguments.
native function MyFunction();
return MyFunction();
};
// Define the getter function for parameter 'example.test.myparam'.
example.test.__defineGetter__('myparam', function() {
// Call CefV8Handler::Execute() with the function name 'GetMyParam'
// and no arguments.
native function GetMyParam();
return GetMyParam();
});
// Define the setter function for parameter 'example.test.myparam'.
example.test.__defineSetter__('myparam', function(b) {
// Call CefV8Handler::Execute() with the function name 'SetMyParam'
// and a single argument.
native function SetMyParam();
if(b) SetMyParam(b);
});
// Extension definitions can also contain normal JavaScript variables
// and functions.
var myint = 0;
example.test.increment = function() {
myint += 1;
return myint;
};
})();
Example usage in the page:
// Call the function.
example.test.myfunction();
// Set the parameter.
example.test.myparam = value;
// Get the parameter.
value = example.test.myparam;
// Call another function.
example.test.increment();