需求:在開發一個從微信公衆號後臺管理網頁上爬取數據的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); } }