JavaScript 模拟事件触发

本文介绍如何通过JavaScript模拟鼠标点击事件,包括创建不同类型的事件对象、初始化事件属性及触发事件的方法,并提供了一个兼容多种浏览器的示例函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

事件触发的模拟步骤


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');
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值