如何在 webkit 平台上将匿名函数作为参数从 javascript 传递到 C++
例子:
window.test('helloworld', function(){
alert('ye');
});
“测试”是C++注入web for javascript,javascript传递两个参数给C++
当 C++ 异步执行时,我希望 C++ 调用第二个参数,它是匿名函数?
还是 C++ 只接收参数类型是字符串?
如何在 webkit 平台上将匿名函数作为参数从 javascript 传递到 C++
例子:
window.test('helloworld', function(){
alert('ye');
});
“测试”是C++注入web for javascript,javascript传递两个参数给C++
当 C++ 异步执行时,我希望 C++ 调用第二个参数,它是匿名函数?
还是 C++ 只接收参数类型是字符串?
将自定义方法添加到 DOMWindow 接口(WebKit/Source/WebCore/page/DOMWindow.idl):
...
interface DOMWindow{
...
[Custom] void test();
...
};
...
在 WebKit/Source/WebCore/bindings/v8/custom/V8DOMWindowCustom.cpp 中,在命名空间 WebCore 中添加一个方法:
...
v8::Handle<v8::Value> V8DOMWindow::testCallback(const v8::Arguments& args){
v8::Local<v8::String> str;
v8::Local<v8::Function> jsFn;
if(!args[0]->IsString() || !args[1]->IsFunction())
return v8::Undefined();
str = args[0]->ToString();
jsFn = v8::Local<v8::Function>::Cast(args[1]);
v8::Persistent<v8::Function> pFn = v8::Persistent<v8::Function>::New(jsFn);
pFn->Call(v8::Context::GetCurrent()->Global(), 0, NULL); // Execute the passed in js function
return v8::Undefined();
}