JavaScript 模擬事件觸發
事件觸發的模擬步驟
Step 1. document.createEvent(eventType)
eventType 共5種型別:Events、HTMLEvents、UIEevents、MouseEvents、MutationEvents。
● Events :所有的事件。
● HTMLEvents:abort、blur、change、error、focus、load、reset、resize、scroll、select、submit、unload。
● UIEevents:DOMActivate、DOMFocusIn、DOMFocusOut、keydown、keypress、keyup。
● MouseEvents:click、mousedown、mousemove、mouseout、mouseover、mouseup。
● MutationEvents:DOMAttrModified、DOMNodeInserted、DOMNodeRemoved、DOMCharacterDataModified、DOMNodeInsertedIntoDocument、DOMNodeRemovedFromDocument、DOMSubtreeModified。
Step 2. 初始化事件
● HTMLEvents 和 Events:initEvent('type', bubbles, cancelable)
● UIEvents:initUIEvent('type', bubbles, cancelable, windowObject, detail)
● MouseEvents:initMouseEvent('type', bubbles, cancelable, windowObject, detail, screenX, screenY, clientX, clientY, ctrlKey, altKey, shiftKey, metaKey, button, relatedTarget)
● MutationEvents:initMutationEvent('type', bubbles, cancelable, relatedNode, prevValue, newValue, attrName, attrChange)
Step 3. 觸發事件
● targetObj.dispatchEvent:Firefox、Chrome、IE9&IE9+
● targetObj.fireEvent:IE(使用 fireEvent 時不需要進行事件的建立和初始化)
使用例項(以IE為例)
● //使用dispatchEvent
● var fireOnThis = document.getElementById('someID');
● var evObj = document.createEvent('MouseEvents');
● evObj.initMouseEvent('click', true, true, window, 1, 12, 345, 7, 220, false, false, true, false, 0, null);
● fireOnThis.dispatchEvent(evObj);
● //使用fireEvent
● var obj = document.getElementById('someID');
● obj.fireEvent("onclick");
下面是我寫的一個模擬滑鼠單擊事件的函式:
function fireClick(linkId) {
var fireOnThis = document.getElementById(linkId);
if (document.createEvent) {
//共5種型別:Events、HTMLEvents、UIEevents、MouseEvents、MutationEvents。
var evObj = document.createEvent('MouseEvents');
evObj.initEvent('click', true, false);
fireOnThis.dispatchEvent(evObj);
}
else if (document.createEventObject) {
fireOnThis.fireEvent('onclick');
}
}
Step 1. document.createEvent(eventType)
eventType 共5種型別:Events、HTMLEvents、UIEevents、MouseEvents、MutationEvents。
● Events :所有的事件。
● HTMLEvents:abort、blur、change、error、focus、load、reset、resize、scroll、select、submit、unload。
● UIEevents:DOMActivate、DOMFocusIn、DOMFocusOut、keydown、keypress、keyup。
● MouseEvents:click、mousedown、mousemove、mouseout、mouseover、mouseup。
● MutationEvents:DOMAttrModified、DOMNodeInserted、DOMNodeRemoved、DOMCharacterDataModified、DOMNodeInsertedIntoDocument、DOMNodeRemovedFromDocument、DOMSubtreeModified。
Step 2. 初始化事件
● HTMLEvents 和 Events:initEvent('type', bubbles, cancelable)
● UIEvents:initUIEvent('type', bubbles, cancelable, windowObject, detail)
● MouseEvents:initMouseEvent('type', bubbles, cancelable, windowObject, detail, screenX, screenY, clientX, clientY, ctrlKey, altKey, shiftKey, metaKey, button, relatedTarget)
● MutationEvents:initMutationEvent('type', bubbles, cancelable, relatedNode, prevValue, newValue, attrName, attrChange)
Step 3. 觸發事件
● targetObj.dispatchEvent:Firefox、Chrome、IE9&IE9+
● targetObj.fireEvent:IE(使用 fireEvent 時不需要進行事件的建立和初始化)
使用例項(以IE為例)
● //使用dispatchEvent
● var fireOnThis = document.getElementById('someID');
● var evObj = document.createEvent('MouseEvents');
● evObj.initMouseEvent('click', true, true, window, 1, 12, 345, 7, 220, false, false, true, false, 0, null);
● fireOnThis.dispatchEvent(evObj);
● //使用fireEvent
● var obj = document.getElementById('someID');
● obj.fireEvent("onclick");
下面是我寫的一個模擬滑鼠單擊事件的函式:
function fireClick(linkId) {
var fireOnThis = document.getElementById(linkId);
if (document.createEvent) {
//共5種型別:Events、HTMLEvents、UIEevents、MouseEvents、MutationEvents。
var evObj = document.createEvent('MouseEvents');
evObj.initEvent('click', true, false);
fireOnThis.dispatchEvent(evObj);
}
else if (document.createEventObject) {
fireOnThis.fireEvent('onclick');
}
}
相關文章
- javascript避免dom事件重複觸發JavaScript事件
- javascript如何獲取觸發事件的物件JavaScript事件物件
- 原生javascript如何獲取觸發事件的物件JavaScript事件物件
- 模擬tap事件和longTap事件事件
- wx模擬滑鼠事件事件
- 取消事件觸發事件
- JavaScript 模擬 HashMap例子JavaScriptHashMap
- 直播平臺軟體開發,Android程式碼模擬觸控、點選及滑動等事件Android事件
- 使用 jQuery 觸發 Vue 事件jQueryVue事件
- 取消事件觸發(妙啊)事件
- jQuery select 觸發事件jQuery事件
- 有趣的觸發器事件觸發器事件
- oracle 觸發器 client 事件Oracle觸發器client事件
- JavaScript模擬拋物效果JavaScript
- javascript模擬實現replaceAll()JavaScript
- JavaScript模擬物件導向JavaScript物件
- JavaScript中短時間高頻次觸發事件的最佳化JavaScript事件
- Oracle觸發器6(建立系統事件觸發器)Oracle觸發器事件
- read by other session等待事件模擬Session事件
- Android觸控事件(下)——事件的分發Android事件
- js 建立和觸發事件 和 自定義事件JS事件
- javascript 事件觸發以後函式指定時間後再執行JavaScript事件函式
- javascript實現的同時按下ctrl和其他鍵觸發事件JavaScript事件
- 你若觸發,我就處理——淺談JavaScript的事件響應JavaScript事件
- 你若觸發 我就處理——淺談JavaScript的事件響應JavaScript事件
- 如何觸發react input change事件React事件
- WebSocket的事件觸發機制Web事件
- Yii中事件觸發機制事件
- mvvm模式 事件觸發器[wpf]MVVM模式事件觸發器
- javascript模擬new的實現JavaScript
- JavaScript 模擬new的實現JavaScript
- JavaScript模擬實現replaceAll方法JavaScript
- Vue事件獲取觸發事件物件和繫結事件物件Vue事件物件
- library cache pin等待事件的模擬事件
- touch事件和click事件多次觸發的問題事件
- js頁面載入觸發事件JS事件
- view.performClick()觸發點選事件ViewORM事件
- 模擬 javaScript Array 原型上的方法JavaScript原型