我已经在本论坛中讨论了有关此问题的问题,但我没有找到与我所面临的问题类型相关的任何疑问。我已经编写了一个NPAPI插件,它可以与GtkLauncher(随webkit一起提供)和firefox一起使用,但是使用google-chrome(18.0.1025.151),该插件甚至没有显示在about:plugins中。我在Ubuntu 10.10上运行。
当我在google-chrome中加载插件时,在浏览器中我无法加载插件错误,但控制台上没有显示任何内容。我怀疑我的NP_Initialize函数是否被调用。
这是NP_Initialize代码:
-------------------------------
NPError OSCALL
NP_Initialize(NPNetscapeFuncs *npnf
#if !defined(_WINDOWS) && !defined(WEBKIT_DARWIN_SDK)
, NPPluginFuncs *nppfuncs)
#else
)
#endif
{
MEDIA_DEBUG_PRINT("\nwcf Media plugin: NP_Initialize");
if(npnf == NULL)
return NPERR_INVALID_FUNCTABLE_ERROR;
if(HIBYTE(npnf->version) > NP_VERSION_MAJOR)
return NPERR_INCOMPATIBLE_VERSION_ERROR;
npnfuncs = npnf;
#if !defined(_WINDOWS) && !defined(WEBKIT_DARWIN_SDK)
NP_GetEntryPoints(nppfuncs);
#endif
return NPERR_NO_ERROR;
}
NPError OSCALL
NP_GetEntryPoints(NPPluginFuncs *nppfuncs)
{
MEDIA_DEBUG_PRINT("\nwcf Media plugin: NP_GetEntryPoints");
nppfuncs->version = (NP_VERSION_MAJOR << 8) | NP_VERSION_MINOR;
nppfuncs->newp = nevv;
nppfuncs->destroy = destroy;
nppfuncs->getvalue = getValue;
nppfuncs->event = handleEvent;
nppfuncs->setwindow = setWindow;
return NPERR_NO_ERROR;
}
我知道有一个用于跨浏览器开发的Firebreath框架,我计划使用它,但目前我需要让我的插件在chrome上运行。
有人可以帮我解决我的问题吗?
谢谢和问候, Souvik
答案 0 :(得分:3)
Chrome往往对事情的启动有点挑剔。我在这里看不到任何可能导致您出现问题的内容,但Chrome因拒绝不符合预期的插件而臭名昭着。最有可能的问题是你的问题;你说你怀疑你的NP_Initialize被调用,如果我是你,我会验证你。让它写入/ tmp /中的文件以确保它。
此外,您尚未提供任何其他入口点,例如NP_GetPluginVersion或NP_GetMimeDescription。这些也是Linux插件所需要的,很可能会对这样的问题负责。如需参考,请查看FireBreath's X11 entrypoint file。
最后,有可能你安装插件的方式是由mozilla而不是chrome找到的;你是怎么安装它的?
答案 1 :(得分:2)
如果你的插件没有显示在chrome:// plugins中,那么它在初始插件扫描期间失败了。尝试使用--debug-plugin-loading
标志运行,该标志应该在注册插件失败时为您提供日志声明。