1

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

我现在的问题是,我可以获取我创建的 Javascript 变量/对象或任意函数的句柄吗?

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

var controller = new Controller()

或者

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

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

谢谢,

克里斯

4

1 回答 1

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.

顺便说一句,FireBreath自动完成了大部分工作。

于 2011-01-05T16:40:13.690 回答