動態調用標簽的事件,在谷歌下無法運行

前天做一個 像百度的搜索那個樣子有下拉的組件。遇上這麼一個問題。當方向盤向下按時找到對應的詞在按回車進行搜索,在谷歌下卻沒有觸發我的事件
 
例如:
 
function evtClick(e){
    alert('click me!');
}
 
window.onload = function (){
     var btn=document.getElementById('btn');
     btn.click();/*(1)*/
}
 
<a id="btn" onclick="evtClick(event)"> 測試</a>
 
結果:
 
ie下可以執行。而谷歌卻無法執行。
 
所以我們對(1)
進行改進寫法
if(document.all)
{
   btn.click();
}else{
   var evt = document.createEvent('HTMLEvents');
   evt.initEvent('click',true,true);
   btn.dispatchEvent(evt);
}
 
 
 
 
定義和用法
dispatchEvent() 方法給節點分派一個合成事件。
語法:
dispatchEvent(evt)
 

參數

描述

evt

必需。要分派的Event 對象。

 

返回值
如果在事件傳播過程中調用瞭 evt 的 preventDefault() 方法,則返回 false,否則返回 true。
拋出
如果 Event 對象 evt 沒有被初始化,或者它的 type 屬性為 null 或空串,該方法將拋出異常。
描述
該方法將分派一個合成事件,它由 Document.createEvent() 創建,由 Event 接口或它的某個子接口定義的初始化方法初始化。
調用該方法的節點將成為事件的目標節點,該事件在捕捉階段中第一次沿著文檔樹向下傳播。如果該事件的 bubbles 屬性為 true,那麼在事件的目標節點自身處理事件後,它將沿著文檔樹向上起泡。

You May Also Like