NPAPI - 使用插件中的javascript对象/函数

时间:2011-01-05 07:19:38

标签: javascript plugins npapi

我已经阅读过如何获取DOM元素的句柄。 这是一个非常有用的链接:http://forums.mozillazine.org/viewtopic.php?f=27&t=1521545

我现在的问题是,我可以处理我创建的Javascript var / object或任意函数吗?

在页面加载时,我有一个脚本执行类似这样的事情......

var controller = new Controller()

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

现在,从我的插件中,我希望能够从我的控制器对象中调用方法。或者,执行该函数callme。 这是可能的,我将如何做到这一点?

谢谢,

克里斯

1 个答案:

答案 0 :(得分:7)

从您的链接中,您知道如何获取DOM窗口的NPObject;从那里你需要知道的是,所有全局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调用它。

BTW,FireBreath使大部分内容自动化。