无法检测到在浏览器窗口中单击以触发功能

时间:2013-05-29 00:39:28

标签: c++ winapi plugins click firebreath

想要通过使用FireBreath编写的C ++插件在浏览器窗口中单击鼠标来触发功能。 但是下面的代码点击时没有任何事情发生。 在TestPluginAPI.h中获得以下代码:

BEGIN_PLUGIN_EVENT_MAP() 
EVENTTYPE_CASE(FB::MouseDownEvent, onMouseDown, FB::PluginWindow) 
END_PLUGIN_EVENT_MAP()
virtual bool onMouseDown(FB::MouseDownEvent *evt, FB::PluginWindow *);

此代码位于testPluginAPI.cpp

bool TestPluginAPI::onMouseDown(FB::MouseDownEvent *evt, FB::PluginWindow *) 
 {

   if(evt->m_Btn == FB::MouseButtonEvent::MouseButton_Left) 
     {  
      fire_showcrd(FB::variant_list_of(evt->m_x)(evt->m_y));
   }
   return 0;
 }

Fire_showcrd(...)已单独测试,并且正在运行。点击检测器部分似乎有问题,但是什么?

1 个答案:

答案 0 :(得分:1)

FireBreath中的PluginWindow事件仅适用于插件所在的区域,而不适用于网页上的其他位置。只有在使用此方法单击插件本身时才会获得事件,并且如果任何DOM元素悬停在您的插件上(即使您的插件因为窗口而在前面绘制),您最终可能会将事件丢失到该元素。

您可以使用javascript获取整个页面的点击事件。