Npapi插件在safari中崩溃

时间:2012-11-19 04:47:45

标签: c++ windows safari npapi

我为Windows开发了npapi插件。它适用于Chrome,Opera,Firefox。 但它在Safari中崩溃了。 我试图找到稳定的npapi插件,它可以在safari中运行,但我找不到这个。

例如:

1)我第一次从插件中获取属性。它有效。

2)但是当我再次尝试时它会失败。

但我发现Flash可以在Safari中使用。为什么? 谢谢。

bool CScriptableObject::HasProperty(NPIdentifier name)
{
    ATL::CString strFunc = NPN_UTF8FromIdentifier(name);
    if(!strFunc.CompareNoCase(PROPERTY_VERSION))
    {
        return true;
    }
     return false;
}

bool CScriptableObject::GetProperty(NPIdentifier name, NPVariant *result)
{
       ATL::CString strFunc = NPN_UTF8FromIdentifier(name);
       if(!strFunc.CompareNoCase(PROPERTY_VERSION))
       {
           INT32_TO_NPVARIANT(6, *result);
           return true;
       }
       return false;
}

所以,当我尝试从js Safari崩溃中获得“版本”时,此代码只能工作一次

2 个答案:

答案 0 :(得分:0)

有许多插件适用于Safari;如果没有看到您的代码和崩溃日志,我们甚至无法猜测问题是什么。

不仅如此,您还没有提到您正在使用的操作系统; Mac Safari远比Windows Safari稳定。

GradeCam's使用FireBreath构建的NPAPI插件在safari上运行得非常好(我肯定知道,我最后检查的是Windows,但我可能没有尝试过最新版本)。

答案 1 :(得分:0)

我发现了问题! 我查看了Firebreath的源代码并了解了。 当我在NPP_GetValue中返回脚本化对象时,它在代码中。 我没有调用NPN_RetainObject。我认为Safari发布了我的对象并将其销毁。