3

我已经浏览了这个论坛中关于这个问题的问题,但我没有找到任何与我所面临的问题相关的问题。我已经编写了一个 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 上运行。

有人可以帮我解决我的问题吗?

谢谢和问候, 苏维克

4

2 回答 2

3

Chrome 往往对事情的启动方式有点挑剔。我在这里看不到任何可能导致您的问题的东西,但是 Chrome 因拒绝不符合预期的插件而臭名昭著。您的问题很可能在以后出现;你说你怀疑你的 NP_Initialize 是否被调用,如果我是你,我会验证这一点。让它写入 /tmp/ 中的文件或确保。

此外,您还没有提供任何其他入口点,例如 NP_GetPluginVersion 或 NP_GetMimeDescription。这些对于 linux 插件也是必需的,并且很可能会导致这样的问题。作为参考,请查看FireBreath 的 X11 入口点文件

最后,您安装插件的方式可能是由 mozilla 而不是 chrome 找到的;你是怎么安装的?

于 2012-04-08T16:27:11.070 回答
2

如果您的插件没有显示在 chrome://plugins 中,那么它在初始插件扫描期间失败。尝试使用--debug-plugin-loading标志运行,这应该会在注册插件失败时为您提供日志语句。

于 2012-04-10T07:46:37.190 回答