NPAPI - использовать объекты / функции javascript из плагина - PullRequest
1 голос
/ 05 января 2011

Я читал о том, как получить дескриптор для элементов DOM. Это была очень полезная ссылка: http://forums.mozillazine.org/viewtopic.php?f=27&t=1521545

Мой вопрос сейчас заключается в том, могу ли я получить дескриптор созданного Javascript var / object или произвольных функций?

При загрузке страницы у меня есть скрипт, выполняющий что-то вроде этого ...

var controller = new Controller()

или

function callme(param1, param2) { ... }

Теперь из моего плагина я хочу иметь возможность вызывать методы из моего объекта контроллера. ИЛИ, выполните эту функцию callme. Возможно ли это и как мне поступить?

Спасибо

Chris

1 Ответ

7 голосов
/ 05 января 2011

По вашей ссылке вы знаете, как получить 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 автоматизирует большую часть этого.

...