需求:在开发一个从微信公众号后台管理网页上爬取数据的chrome插件时,有部分页面元素是只显示了部分摘要信息的,须要把鼠标移上去后才能显示所有信息(相似title的弹出显示)。这就须要在chrome插件中实现触发该元素的hover事件(或者mouseenter事件),让所有信息显示再从弹窗中获取数据。(因为开发时的环境须要客户提供微信公众号的后台帐号等环境,这事儿过去一段时间了,没法再演示一遍)chrome
环境:chrome浏览器浏览器
问题:使用常见的jQuery触发事件方法没法成功触发事件并弹出窗口,现象表现为元素自己的hover事件方法没法触发,可是在console里尝试从新注册一个事件(如alert("test")),再触发该事件则能成功触发。折腾了好一段时间,最好使用js原生的触发事件方法成功实现逻辑。至于jQuery为何不行,还没有弄清。微信
解决方案:spa
/** * js原生的触发事件方法,比jQuery方法适用性广一些,在某些状况下jQuery触发事件无效,适用本方法有效
* element 触发事件的对象
* eventNameStr 事件的名称
* 调用示例 triggerEvent(document.getElementById("a_test"),"mouseover"); */ function triggerEvent(element,eventNameStr){ if (document.createEvent) { event = document.createEvent("HTMLEvents"); event.initEvent(eventNameStr, true, true); event.eventName = eventNameStr; element.dispatchEvent(event); } else { event = document.createEventObject(); event.eventType = eventNameStr; event.eventName = eventNameStr; element.fireEvent("on" + event.eventType, event); } }