Plugins Firebreath插件,如何阅读<;参数>;价值观

Plugins Firebreath插件,如何阅读<;参数>;价值观,plugins,browser,firebreath,Plugins,Browser,Firebreath,我想阅读自定义插件的值 我在网上找不到答案,我找到的是: 我看到参数存储在pluginMain->setParams(paramList)中 你能指出我以后如何访问这个列表吗?或pluginMain 是否有pluginMain->getParams()?我找不到参考资料 我也找不到setParams()的源代码 问题是,如何从PluginWindowXXX或FB::NpapiPluginXXX获取参数 我将m_npHost导出到PluginWindowXXX,用gdb在其中设置断点,但仍然没有

我想阅读自定义插件的

我在网上找不到答案,我找到的是:

我看到参数存储在
pluginMain->setParams(paramList)中

你能指出我以后如何访问这个列表吗?或
pluginMain

是否有
pluginMain->getParams()
?我找不到参考资料
我也找不到
setParams()
的源代码

问题是,如何从
PluginWindowXXX
FB::NpapiPluginXXX
获取参数

我将
m_npHost
导出到
PluginWindowXXX
,用gdb在其中设置断点,但仍然没有成功

我所能想到的就是:

(gdb) p ((FB::Npapi::NpapiBrowserHost)this->m_npHost)->GetValue
$17 = {NPError (const FB::Npapi::NpapiBrowserHost * const, NPNVariable, void *)} 0x7fe435adeff8 <FB::Npapi::NpapiBrowserHost::GetValue(NPNVariable, void*) const>

在PluginCore派生类中,您可以使用
getParam
方法或
getParamVariant
方法

从:

boost::可选PluginCore::getParam(const std::string&key){
boost::可选的rval;
FB::VariantMap::const_迭代器fnd=m_params.find(key.c_str());
如果(fnd!=m_参数end())
rval.reset(fnd->second.convert_cast());
返回rval;
}
FB::variant FB::PluginCore::getParamVariant(常量std::字符串和键)
{
FB::VariantMap::const_迭代器fnd=m_params.find(key.c_str());
如果(fnd!=m_参数end())
返回fnd->second;
返回FB::variant();
}
因此,如果确定是字符串(基本上是字符串,除非它以on开头,在这种情况下,它可能已转换为引用函数),则可以使用:

boost::optional<std::string> mystr = getParam("mystr");
if (mystr) { 
   call_fn_with_string(*mystr);
}
boost::可选mystr=getParam(“mystr”);
如果(mystr){
使用字符串(*mystr)调用\u fn\u;
}
或者,您可以将其作为变体获取并转换为:

FB::variant mystrVal = getParamVariant("mystr");
try {
    call_fn_with_string(mystrVal.convert_cast<std::string>());
} catch (FB::bad_variant_cast &err) {
    // What to do if the cast to string fails
}
FB::variant mystrVal=getParamVariant(“mystr”);
试一试{
使用字符串(mystrVal.convert_cast())调用_fn_;
}捕获(FB::坏的\u变体\u投射和错误){
//如果转换为字符串失败怎么办
}

塔克斯林的答案一如既往地是最正确的,但我会试试看。我正在我的MyPluginAPI构造函数中读取参数

MyPluginAPI::MyPluginAPI(const MyPluginPtr& plugin, const FB::BrowserHostPtr& host) : m_plugin(plugin), m_host(host)
{
    string settings; //<param name="settings" value="{'foo':'bar'}">
    settings = plugin->getParam("settings");    
}
MyPluginAPI::MyPluginAPI(constmypluginptr&plugin,constfb::BrowserHostPtr&host):m_插件(plugin),m_主机(host)
{
字符串设置//
设置=插件->获取参数(“设置”);
}

谢谢你们两位,哈莎和塔克西莉安。我尝试了两种方法,多亏了你,它们现在都起作用了
FB::variant mystrVal = getParamVariant("mystr");
try {
    call_fn_with_string(mystrVal.convert_cast<std::string>());
} catch (FB::bad_variant_cast &err) {
    // What to do if the cast to string fails
}
MyPluginAPI::MyPluginAPI(const MyPluginPtr& plugin, const FB::BrowserHostPtr& host) : m_plugin(plugin), m_host(host)
{
    string settings; //<param name="settings" value="{'foo':'bar'}">
    settings = plugin->getParam("settings");    
}