我是否需要自己实施NPN功能?

时间:2012-07-25 17:40:15

标签: npapi browser-plugin npruntime

我从http://code.google.com/p/npapi-sdk/source/browse/?r=7#svn%2Fwiki

获取了我的头文件

所以在Initialize方法中,我存储了一个指向所有浏览器NPN方法的指针,如此

static NPNetscapeFuncs* browser;

NPError NP_Initialize(NPNetscapeFuncs* browserFuncs)
{  
  /* Save the browser function table. */
  browser = browserFuncs;

  return NPERR_NO_ERROR;
}

当我创建NPClass结构时,我应该只为它分配已经存在的浏览器函数,如下所示:

struct NPClass class;
class.hasMethod = browser-> hasmethod;
etc.

或者我是否需要使用浏览器功能在npruntimeheader中实现这些功能,并将它们分配给该类。例:     class.hasMethod = NPN_HasMethod;

然后实现以下功能:

bool NPN_HasMethod(NPP npp, NPObject *npobj, NPIdentifier methodName)
{
   return browser->hasmethod(npp, npobj, methodName);
}

或者运行时头中的NPN函数是否已经以某种方式实现了?

我需要在c中写这个,我不认为使用firebreath对于这个特定项目来说是一个好主意。在此先感谢您的帮助

1 个答案:

答案 0 :(得分:1)

您需要自己实现NPClass es的功能,它们定义了可编写脚本的对象的行为。 Part three的紫杉醇类NPAPI教程涵盖了这一点。

您通过browser功能表收到的功能用于调用浏览器(并已在那里实现),例如:通过NPObject等获取有关hasmethod的信息

然而,如果您想要使用NPN_HasMethod()这样的函数声明需要由它实现,最简单的就是调用browser中的相应函数,如您在HasMethod()中所示