NPAPIをざっくりやってみる (3)
NPAPIでは
<object id="plugin" type="application/hoge-plugin">
<param name="text" value="AAA" />
</object>
な感じでHTML側でプラグイン参照定義する訳なんだが、<object>に指定されている属性と値、更にそこから内包される<param>等の値を利用したい場合にはNPPluginFuncs.newpで参照されるNPP_New等で行う事が出来る模様(<embed>では内包される<param>が認識しない模様)
NPError NP_Initialize(NPNetscapeFuncs* bFuncs, NPPluginFuncs* pFuncs) {
loga("NP_Initialize");
ppFuncs = bFuncs;
pFuncs->newp = NPP_New;
pFuncs->getvalue = NP_GetValue;
return NPERR_NO_ERROR;
}
NPError NPP_New(NPMIMEType pluginType, NPP instance, uint16_t mode, int16_t argc, char* argn[], char* argv[], NPSavedData* saved) {
loga("NPP_New");
int i;
map<string, string> params;
for (i = 0; i < argc; i++) {
params[argn[i]] = argv[i];
}
cerr << "size: " << params.size() << endl;
cerr << "id: " << params["id"] << endl;
cerr << "type: " << params["type"] << endl;
cerr << "text: " << params["text"] << endl;
return NPERR_NO_ERROR;
}
な感じでNPP_Newに指定されている引数にバインドされる模様なので、それを利用して取得する事が可能な模様。上記したHTMLの場合
size: 3 id: plugin type: application/hoge-plugin text: AAA
というようなアウトプット結果が得られる