为什么使用 Chrome 和 IE 的 firebreath 2.0 插件方法中 convert_cast 的行为存在差异

Why is there differences in behavior of convert_cast in firebreath 2.0 plugin method using Chrome and IE

美好的一天。

我的 firebreath 2.0 插件中有下一个方法:

void A::get_string(const FB::JSObjectPtr& myclassObj)
{
    FB::variantPromise a = myclassObj->Invoke("mymethod", FB::VariantList{ "test" });
    a.then<void>([this](FB::variant ret) {
        std::string Str = ret.convert_cast<std::string>();
        return;
    });
}

myclassObj 中的方法是:

std::string B::mymethod(std::string tStr)
{
    return tStr;
}

std::string "test" 预计在 Str 中,但在我从浏览器调用 get_string 后,存在行为差异: 当我使用 Chrome 时,我在 ret 中得到字符串并且转换正常。 当我使用 IE 时,我在 ret 中得到 shared_ptr,但我无法从中获取我的字符串。在那种情况下,我在转换时遇到异常。

请帮我确定我做错了什么:)

p.s。没关系,我想要得到的是:std::string、long 或 smth else,在 chrome 中转换没问题,但在 IE 中,我只得到 shared_ptr.

事实上,我想在 get_string 方法中获取指向 myclassObj 的指针,但由于代理-类,我被卡住了。所以,我正在尝试使用 std::string.

获取指针

您必须调试实际发生的情况; FireBreath 2 的 IE 界面中可能存在错误,因为我认为它没有经过广泛测试。如果是这样,您可能会找到并修复它——这就是开源的优势!

不过,与其将对象从浏览器传回,我建议使用您传入的某种标识符,然后使用地图或插件端的其他内容查找对象。这样你就没有通过浏览器代理的所有开销