Я работаю над плагином, который должен принимать звонки из JavaScript. В частности, он должен быть в состоянии дать функцию обратного вызова для javascript, а javascript должен иметь возможность вызывать эту функцию позже, по крайней мере, со строковым аргументом. JavaScript выглядит примерно так (в идеале):
var callback = null;
var setCallback = function(cb) {
var callback = cb;
};
var input = document.getElementById('my_text_input_field');
input.onkeypress = function(ev) {
// Did the user press enter?
if (ev && ev.which == 13) {
callback(input.value);
return false;
}
};
Я представляю, что мой C-код выглядит примерно так:
void SetCallback(void (*callback)(const char*)) {
NPVariant npCallback;
OBJECT_TO_NPVARIANT(callback, npCallback);
NPVariant args[] = { npCallback };
size_t nargs = 1;
NPVariant result;
// gFuncs is an NPNetscapeFuncs pointer
NPIdentifier method = gFuncs->getstringidentifier("setCallback");
// gJavaScriptAPI is an NPObject pointer
gFuncs->invoke(gInstance, gJavaScriptAPI, method, args, nargs, &result);
}
Это разумное начало? Если так, что мне нужно сделать в функции обратного вызова для обработки вызовов к ней? Если нет, то как правильно сделать что-то подобное или это невозможно в NPAPI?
Заранее спасибо.