Я пытаюсь закодировать приветственный пример плагина NPAPI. Я выполнил все основные функции, необходимые, и я добавил функцию Get_String(), которая возвращает глобальную строку hello.Функции NPAPI Вызывается Javascript
После создания браузер может обнаружить плагин и всю информацию, связанную с этим, но я не могу вызвать функцию Get_String() из JavaScript! Вот некоторые код: plugin.c
#define PLUGIN_NAME "Name Plugin"
#define PLUGIN_DESCRIPTION " Plugin Description"
#define PLUGIN_VERSION "1.0"
static NPNetscapeFuncs* sBrowserFuncs = NULL;
NP_EXPORT(NPError)
NP_Initialize(NPNetscapeFuncs* bFuncs, NPPluginFuncs* pFuncs)
{
sBrowserFuncs = bFuncs;
if (pFuncs->size < (offsetof(NPPluginFuncs, setvalue) + sizeof(void*)))
return NPERR_INVALID_FUNCTABLE_ERROR;
pFuncs->newp = NPP_New;
pFuncs->destroy = NPP_Destroy;
return NPERR_NO_ERROR;
}
NP_EXPORT(char*)
NP_GetPluginVersion()
{
return PLUGIN_VERSION;
}
NP_EXPORT(const char*)
NP_GetMIMEDescription()
{
return "application/my-plugin::";
}
NP_EXPORT(NPError)
NP_GetValue(void* future, NPPVariable aVariable, void* aValue) {
switch (aVariable) {
case NPPVpluginNameString:
*((char**)aValue) = PLUGIN_NAME;
break;
case NPPVpluginDescriptionString:
*((char**)aValue) = PLUGIN_DESCRIPTION;
break;
default:
return NPERR_INVALID_PARAM;
break;
}
return NPERR_NO_ERROR;
}
NP_EXPORT(NPError)
NP_Shutdown()
{
return NPERR_NO_ERROR;
}
NPError NPP_New(NPMIMEType pluginType, NPP instance, uint16_t mode, int16_t argc, char* argn[], char* argv[], NPSavedData* saved)
{
return NPERR_NO_ERROR;
}
NPError NPP_Destroy(NPP instance, NPSavedData** save)
{
return NPERR_NO_ERROR;
}
char* Get_String()
{
return "hello world from Get function" ;
}
void Set(NPObject object){}
test.html
<doctype html>
<html>
<head>
<script>
var plugin = document.getElementById("plugin");
console.log(plugin.Get_String());
</script>
</head>
<embed id="plugin" type="application/typemine-plugin">
<body>
</body>
</html>
Вы прочитали учебник [NPAPI] (http://colonelpanic.net/2009/03/building-a-firefox-plugin-part-one/) или [documentation] (https: //developer.mozilla .org/EN-US/Docs/Gecko_Plugin_API_Reference/Scripting_plugins)? Знаете ли вы о более простых вариантах, таких как [Firebreath] (http://www.firebreath.org/)? –
Да, я посмотрел на него и на других. Но в моем случае мне это не нужно. Я хочу сделать это с большим трудом. –
Итак, прочитали ли вы учебник и/или документацию? Похоже, вам не хватает всех настроек, необходимых для сценариев, и ожидайте, что простая функция C будет доступна только из JS. –