首先介绍一下我在使用 Firebreath 所做的事情的背景。
- 我正在使用 firebreath 在浏览器中开发渲染查看器插件。
- 我在插件中定义了两种 MIME 类型,一种用于主查看器,另一种用于 2D 平面视图。
- 在每个页面中,只允许一个主查看器,但可以有多个 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)
ISSUE是在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 发生了什么?