我试图从我的NPAPI插件中获取javascript对象的属性,但在使用NPN_HasProperty()、NPN_HasMethod()和NPN_Enumerate()以及它们返回的内容时遇到了一些问题,并且没有返回。
举个例子,如果我用x=new数组创建一个数组,Javascript长度(‘x.hasOwnProperty’)返回true,'length‘的NPN_HasProperty()返回true,但是NPN_Enumerate并没有像我预期的那样列出这个属性。
在一个相关的问题中,我想要检测一个对象是否是一个函数。对于如何在NPAPI插件中做到这一点有什么建议吗?我正在尝试调用NPN_HasMethod( ' call‘),但返回的结果是false (因为’call‘是在原型上定义的?)有没有办法让插件遵循继承,或者执行"x instanceof Function“的等价物。?
任何关于如何枚举属性的进一步信息,特别是如何遵循继承图,都将是非常受欢迎的,谢谢。
发布于 2012-10-16 00:51:03
NPN_Enumerate是一个有趣的东西;它是与NPN_Construct同时引入的,至少在许多浏览器上,它们不能在原生javascript对象上工作。提供它们主要是为了使枚举或构造NPObjects成为可能。
我已经在你实际问了那个具体问题的帖子上回答了你的另一个问题;最好在这里一次只回答一个问题,以避免混淆。
如果您需要这样做,我建议您使用NPN_Evaluate向页面中注入一个javascript函数,该函数将枚举属性并返回一个数组或逗号分隔的字符串(这将稍微更有效,因为您必须通过对该数组进行NPN_GetProperty调用来迭代)。
https://stackoverflow.com/questions/12890410
复制相似问题