【发布时间】:2012-11-19 04:47:45
【问题描述】:
我为 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 崩溃中获取正确的“版本”时,这段代码只能工作一次
【问题讨论】:
-
你泄露了 NPN_UTF8FromIdentifier 返回的字符串,你需要 NPN_MemFree 他们。
-
哇。谢谢你。不知道执行完NPN_MemFree后还要释放内存
-
糟糕。不是在 NPN_MemFree 之后,而是在 NPN_UTF8FromIdentifier 之后。