0

我为 Windows 开发了 npapi 插件。它适用于 Chrome、Opera、Firefox。但它在 Safari 中崩溃。我试图找到在 safari 中工作的稳定 npapi 插件,但我没有找到这个。

例如:

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 崩溃中获取正确的“版本”时,这段代码只能工作一次

4

2 回答 2

0

Safari 上有很多插件。在没有看到您的代码和崩溃日志的情况下,我们甚至无法猜测问题所在。

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

使用 FireBreath 构建的GradeCamNPAPI 插件在 safari 上效果很好(绝对是 mac,我上次检查过 windows,但我可能没有尝试过最新版本)。

于 2012-11-19T05:48:16.637 回答
0

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

于 2012-11-19T06:14:30.737 回答