最初に、私が Firebreath で何をしているかについての背景を説明します。
- firebreath を使用してブラウザでレンダリング ビューアー プラグインを開発しています。
- プラグインで 2 つの MIME タイプを定義します。1 つはメイン ビューア用で、もう 1 つは 2D 平面図用です。
- 各ページでは、1 つのメイン ビューアーのみが許可されますが、複数の 2D 平面図を表示できます。そして、それらはすべて、メイン ビューアーで開かれた同じモデル ドキュメントを共有します。
- したがって、2D 平面図をインスタンス化した後、ドキュメント オブジェクト (firebreath JSAPI) を 2D 平面図に渡す必要があります。
次に、メイン ビューアーと平面図の両方が「mainviewer」と「planview」という名前で読み込まれていると仮定し、以下のようにドキュメントを平面図ビューアーに添付します。
planview.attach(mainviewer.doc);
(the signature is "bool attach(const FB::JSObjectPtr& myDoc)" and
The mainviewer.doc is just a firebreath JSAPI)
問題は、firefox では、渡された JSObject を呼び出すことによって JSAPI として認識できないことです。
FB::JSAPIPtr jsAPI = myDoc->getJSAPI(); // THIS WILL RETURN **NULL**.
m_main_doc = FB::ptr_cast<LcFbViewerDocumentAPI>(jsAPI); // Cast to my document API.
この問題は、ホスト ブラウザが Firefox で、IE/Chrome が正常に動作する場合にのみ発生します。
では、firefox を使用すると、渡された JSAPI はどうなったのでしょうか?