Я написал простой плагин echoer PNaCl, обработчик сообщений которого просто отправляет входящее сообщение без изменений:
class Instance : public pp::Instance {
public:
virtual void HandleMessage(const pp::Var& message_data) {
PostMessage(message_data);
}
};
И, на стороне JavaScript, я публикую сообщение, данные которого являются функцией, ожидаю получить ту же функцию обратно и выполнить ответную функцию:
var funcobj = {
tocall: function() { alert('tocall called'); }
}
document.getElementById('echoFunc').addEventListener('click', function() {
console.log(funcobj);
// Post a function to plugin
common.naclModule.postMessage(funcobj);
});
function handleMessage(message_event) {
console.log(message_event);
message_event.data.tocall();
}
К сожалению, в handleMessage()
, message_event.data.tocall()
это уже не функция, а Объект с полями defineGetter
, defineSetter
, lookupGetter
, lookupSetter
и т.д.
Как я могу правильно передать функцию JavaScript между браузером Chrome и плагином PNaCl через PPAPI?