Как передать анонимную функцию в качестве параметра из javascript в c ++ на webkit?

Как передать анонимную функцию в качестве параметра из javascript в C ++, на платформе webkit

пример:

window.test('helloworld', function(){
alert('ye');
});

«Тест» — это C ++, внедренный в web для javascript, и javascript передает два параметра в C ++

Я хочу, чтобы C ++ вызывал второй параметр, который является анонимной функцией, когда C ++ выполняется как асинхронный?

Или C ++ просто получает параметр, тип которого является String?

3

Решение

  1. Добавьте пользовательский метод в интерфейс DOMWindow (WebKit / Source / WebCore / page / DOMWindow.idl):

    ...
    interface DOMWindow{
    ...
    [Custom] void test();
    ...
    };
    ...
    
  2. В 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();
    }
    
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]