0

在我的 NPAPI 插件中,我希望确定 NPObject 是否是函数(即,它是函数的实例)。有什么建议我该怎么做?

我可以检查 NPN_HasMethod() 以查看是否有一个名为“调用”的方法,但我认为更好的方法是如果我可以执行相当于 javascript 的“foo instanceof 函数”

我试图调用 NPN_Evaluate,以我的 'foo' NPObject 作为范围,以及“this instanceof Function”的脚本,但不幸的是,'this' 是全局范围,而不是我的 'foo' 对象。我在这里误解了范围参数的意图吗?我发现的任何示例都在使用该窗口。能够使用实际对象(或至少是“this”或对 javascript 对象的引用)将是可取的(对于许多其他目的),但任何确定它是否是函数的好方法都会受到赞赏。

4

1 回答 1

1

我知道的唯一方法是使用 NPN_Evaluation 将函数注入全局 javascript 范围,然后使用 NPObject 调用它。

例如,注入以下函数:

window.isFunction = window.isFunction || function(obj) {
  return typeof obj === 'function';
};

然后,您可以使用 NPAPI 获取窗口的 NPObject,获取“isFunction”属性,然后使用要检查的函数作为参数对其执行 NPN_InvokeDefault。

于 2012-10-15T16:39:57.930 回答