封裝接口分三步:
1、在PluginAPI的構(gòu)造函數(shù)中調(diào)用注冊(cè)方法函數(shù)registerMethod("xxx", make_method(this, &PluginAPI::xxx));
2、在類中聲明xxx接口;
3、在PluginAPI.cpp中定義xxx函數(shù)的實(shí)現(xiàn)。
設(shè)置回調(diào)分三步:
1、在PluginAPI的構(gòu)造函數(shù)中調(diào)用注冊(cè)事件宏FB_JSAPI_EVENT(事件,參數(shù)個(gè)數(shù),(各參數(shù)類型));
2、在需要觸發(fā)事件的位置調(diào)用fire_事件(各個(gè)參數(shù));
3、在js層注冊(cè)事件并且實(shí)現(xiàn)事件的處理流程,注冊(cè)事件老版ie使用attachEvent("on"+name, func),新點(diǎn)的ie使用addEventListener(name, func, false),然后記得將事件和處理流程綁定addEvent(this.plugin, 'UI_process', processEvent)。
為插件添加Property屬性分兩步:
1、在PluginAPI的構(gòu)造函數(shù)中調(diào)用;
registerProperty("xxx",
make_property(this,
&PluginAPI::get_xxx, //設(shè)置可讀屬性
&PluginAPI::set_xxx)); //設(shè)置刻寫屬性
2、在js層直接讀取或修改xxx屬性。
如何獲取DOM的屬性,回調(diào)DOM的方法
FB::DOM::WindowPtr window = m_host->getDOMWindow();
FB::JSObjectPtr obj;
if (window && window->getJSObject()->HasProperty("window")) {
obj = window->getProperty<FB::JSObjectPtr>("window");
xxx = window->getNode("元素id")->getProperty<std::string>("要獲取的屬性");
obj->Invoke("alert", FB::variant_list_of("xxx"));
}