По вашей ссылке вы знаете, как получить NPObject для окна DOM; оттуда все, что вам нужно знать, это то, что все глобальные переменные javascript на самом деле являются свойствами окна.
var controller = new Controller();
Если вы сделали это в глобальной области видимости, то window.controller - это ваша переменная, поэтому вам просто нужно сделать:
/* Get window object */
NPObject* window = NULL;
NPN_GetValue(aInstance, NPNVWindowNPObject, &window);
/* Get document object */
NPVariant controllerVar;
NPIdentifier id = NPN_GetStringIdentifier("controller");
NPN_GetProperty(aInstance, window, id, &controllerVar);
NPObject* document = NPVARIANT_TO_OBJECT(controllerVar);
Затем вы можете получить доступ к свойствам вашего Controller
объекта или вызвать методы. Обратите внимание, что если бы контроллер был функцией, вы могли бы вызвать ее с помощью NPN_InvokeDefault
.
Кстати, FireBreath автоматизирует большую часть этого.