1

firebreath フレームワークを使用してブラウザ プラグインを作成しています。JavaScript でプラグインを使用すると、奇妙なエラーが発生します。

unsupported: no toString() function in type function

JSAPIPtr を返す Dropbox_pluginAPI クラスのメソッドを数回呼び出そうとすると、このエラーが発生します。

コードは次のとおりです。

 //JavaScript context
for(var i=0; i<100; i++)
{
//After several times of calling the method I get the error: unsupported: no toString() function in type function
var md = plugin().getMetaDataOfFileOrFolder("dropbox/demotext","null",true,false,"null"); 
}


//API class

FB::JSAPIPtr Dropbox_pluginAPI::getMetaDataOfFileOrFolder(std::string fileOrFolderPath,std::string hash, bool list, bool include_deleted,
std::string rev)
{
MetaData m = client->getMetaDataOfFileOrFolder(fileOrFolderPath,hash,list,include_deleted,rev);

return boost::make_shared<MetaDataAPI>(m_host,m);

}


//MetaDataAPI class
class MetaDataAPI : public FB::JSAPIAuto
{
public:

/**
* Constructor.
* @param host The browser
* @param m The MetaData object
*/
MetaDataAPI(const FB::BrowserHostPtr& host,MetaData m);

.....
.....

}

誰かがfirebreathで働いて、私を助けてくれることを願っています!


Firefox のバージョンを更新し、断片を別の行に分割しましたが、それでもエラーが発生します。私は次のことをしました:

var plug = plugin();
var fn = plug.getMetaDataOfFileOrFolder;
var md;
for(var i=0; i<100; i++)
{
    md = fn("dropbox/demotext","null",true,false,"null"); 
}   
alert("Finish");

アラートが呼び出されることはありません。いくつかの呼び出しの後、まだエラーがあります:

    [unsupported: no toString() function in type function]

列をなして:

    md = fn("dropbox/demotext","null",true,false,"null"); 
4

1 に答える 1

1
  1. まず、Firefox を更新してみてください。古いバージョンの firefox にはバグがあり、ブリッジを介して送信された 2 つの NPObjects が時々スワップされ、本来あるべきオブジェクトとは異なるオブジェクトが提供されていました。

  2. plugin() 呼び出しを親スコープに移動して、毎回呼び出さないようにします

  3. エラーが発生した場所を正確に確認できるように、これを複数の行に分けます。

このような:

var plug = plugin();
for(var i=0; i<100; i++)
{
    var fn = plug.getMetaDataOfFileOrFolder;
    var md = fn("dropbox/demotext","null",true,false,"null"); 
}

エラーが引き続き発生すると仮定すると、エラーが var fn 行にあるか、var md 行にあるかどうかがわかります。var fn 行をループの外に移動して、それが何かを行うかどうかを確認することもできます。

問題が Firefox のバグに関連している場合は、var fn を移動するとおそらく違いが生じるでしょう。それらのテストを行い、結果を報告してください。これは、何が起こっているのかを理解するのに役立ちます。

于 2012-02-10T16:55:33.460 に答える