2

我正在尝试从我的 NPAPI 插件中获取 javascript 对象的属性,但是在使用 NPN_HasProperty()、NPN_HasMethod() 和 NPN_Enumerate() 以及它们返回的内容以及不返回的内容时遇到了一些问题。

例如,如果我使用 x=new Array; 创建一个数组;Javascript x.hasOwnProperty('length') 返回 true,并且 NPN_HasProperty() for 'length' 返回 true,但 NPN_Enumerate 没有像我预期的那样列出此属性。

在一个相关问题中,我想检测一个对象是否是一个函数。关于如何在 NPAPI 插件中执行此操作的任何建议?我正在尝试调用 NPN_HasMethod('call') 但这会返回 false (因为在原型上定义了 'call'?)插件有什么方法可以遵循继承,或执行相当于“x instanceof Function”的方法。 . ?

任何关于如何枚举属性的进一步信息,特别是如何遵循继承图,都非常受欢迎,谢谢。

4

1 回答 1

1

NPN_Enumerate 是一件有趣的事情;它是与 NPN_Construct 同时引入的,至少在许多浏览器上它们不适用于原生 javascript 对象。提供它们主要是为了让您可以枚举或构造 NPObject。

我已经在您实际提出该特定问题的线程上回答了您的其他问题;最好一次只回答一个问题,以避免混淆。

如果您需要这样做,我会建议您使用 NPN_Evaluate 将 javascript 函数注入页面,该函数将枚举属性并返回数组或逗号分隔的字符串(这会更有效,因为您必须迭代数组通过进行 NPN_GetProperty 调用)。

于 2012-10-15T16:51:02.643 回答