0

Windows 用の npapi プラグインを開発しました。Chrome、Opera、Firefox で動作します。しかし、Safari ではクラッシュします。サファリで動作する安定した npapi プラグインを見つけようとしましたが、これは見つかりませんでした。

例えば:

1) 初めてプラグイン fot からプロパティを取得します。できます。

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 クラッシュから適切な「バージョン」を取得しようとすると、1 回だけ機能します。

4

2 に答える 2

0

Safariで動作するプラグインはたくさんあります。コードとクラッシュログを見ずに問題が何であるかを推測する方法は考えられません。

それだけでなく、使用しているOSについても言及していません。MacSafariはWindowsSafariよりもはるかに安定しています。

FireBreathで構築されたGradeCamのNPAPIプラグインは、サファリでうまく機能します(macは間違いなく、最後にチェックしたウィンドウですが、最新バージョンを試していなかった可能性があります)。

于 2012-11-19T05:48:16.637 に答える
0

問題が見つかりました!Firebreathのソースコードを見て理解しました。NPP_GetValue でスクリプト可能なオブジェクトを返すとき、それはコードにありました。NPN_RetainObject を呼び出しませんでした。Safari がオブジェクトを解放して破棄したと思います。

于 2012-11-19T06:14:30.737 に答える