前天做一個 像百度的搜索那個樣子有下拉的組件。遇上這麼一個問題。當方向盤向下按時找到對應的詞在按回車進行搜索,在谷歌下卻沒有觸發我的事件
例如:
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,那麼在事件的目標節點自身處理事件後,它將沿著文檔樹向上起泡。