如何在加载插件时触发事件
How to fire events when plugin is loaded
在我的插件中,我需要能够在加载插件后触发事件。
我不想使用内置机制(将其添加到对象参数中),因为我需要能够控制与事件触发一起发送的参数。
问题是,当我尝试在onPluginReady
中触发事件时,它就是不触发。调试时,我注意到m_proxies
为空(JSAPIImpl::FireEvent
),但是如果我尝试在onMouseDown
方法中使用相同的代码来触发事件,那么它运行良好。
这是我的创建JSAPI代码:
FB::JSAPIPtr plugin::createJSAPI()
{
this->jsApi = JSApiPtr(new pluginAPI(FB::ptr_cast<plugin>(shared_from_this()), m_host));
return this->jsApi;
}
这是onPluginReady代码:
void plugin::onPluginReady()
{
this->getRootJSAPI();
this->jsApi->fireMyEvent(this->myId);
}
并且不会触发该事件,尽管这确实会触发:
bool plugin::onMouseDown(FB::MouseDownEvent *evt, FB::PluginWindow *)
{
this->jsApi->fireMyEvent(this->myId);
return false;
}
为什么?
谢谢。
onPluginReady 可能会在调用来自 param 标签的 onLoad 回调之前被调用;这意味着您的事件处理程序尚未附加。这就是FireBreath提供onload param回调的原因 - 它为您提供了一个附加事件处理程序并找出已加载内容的位置。
编辑以从评论中澄清:
回调将提供单个参数,其中包含对根 JSAPI 对象的引用。 请注意,在这种情况下,它不是对象或嵌入标记,而只是 JSAPI 对象,因此您可以使用那里的任何方法或属性。
相关文章:
- 如何在elfinder插件(一个文件管理器插件)上获得上传前事件
- 在插件中分配事件
- JQuery facebook订阅插件鼠标事件
- CSS + jQ插件阻止AJAX调用/事件侦听器工作
- 使用所选插件更改动态添加的选择上的事件
- 有没有一种方法可以重新绑定jQuery插件中引用的事件处理程序
- 自定义jQuery插件:事件未按预期运行
- Jquery插件绑定更改事件
- 如何使用show hint插件在CodeMirror中订阅选择事件
- 在第三次onPageClick事件后,使用twbspagination插件和AJAX更新JS分页
- jQuery有没有,或者有没有jQuery插件,内置了监听CSS3动画事件的功能(例如animationEnd)
- jQuery插件的自定义事件与回调
- 可以't在我的Firefox插件中触发点击事件
- 如何在我的自定义插件中绑定调整大小事件
- 如何将自定义事件添加到 jQuery 插件模式中
- 如何从jQuery插件中附加keyup事件
- 火狐插件 - 无法触发任何类型的点击事件
- Firefox 引导插件:安装事件未执行
- 了解JavaScript事件并应用jQuery事件/插件
- 是否有一个移动触摸事件插件的jQuery