我是靠谱客的博主 激动春天,最近开发中收集的这篇文章主要介绍html模拟点击某个键盘按钮,如何使用JavaScript模拟按键或单击?,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

模拟鼠标单击

我的猜测是网页正在监听mousedown而不是点击(这对于可访问性是不利的,因为当用户使用键盘时,只会触发焦点和点击,而不是mousedown)。所以你应该模拟mousedown,click和mouseup(顺便说一句,它是iPhone,iPod Touch和iPad在点击事件上做的事情)。

要模拟鼠标事件,可以将此代码段用于支持DOM 2 Events的浏览器。要获得更加简单的模拟,请使用填充鼠标位置initMouseEvent。

// DOM 2 Events

var dispatchMouseEvent = function(target, var_args) {

var e = document.createEvent("MouseEvents");

// If you need clientX, clientY, etc., you can call

// initMouseEvent instead of initEvent

e.initEvent.apply(e, Array.prototype.slice.call(arguments, 1));

target.dispatchEvent(e);

};

dispatchMouseEvent(element, 'mouseover', true, true);

dispatchMouseEvent(element, 'mousedown', true, true);

dispatchMouseEvent(element, 'click', true, true);

dispatchMouseEvent(element, 'mouseup', true, true);

当您触发模拟点击事件时,浏览器将实际触发默认操作(例如,导航到链接的href,或提交表单)。

在IE中,等效的片段就是这个(未经验证,因为我没有IE)。我不认为你可以给事件处理程序鼠标位置。

// IE 5.5+

element.fireEvent("onmouseover");

element.fireEvent("onmousedown");

element.fireEvent("onclick");  // or element.click()

element.fireEvent("onmouseup");

模拟keydown和按键

您可以模拟keydown和keypress事件,但不幸的是,在Chrome中,它们只会触发事件处理程序,并且不执行任何默认操作。我认为这是因为DOM 3 Events工作草案描述了这个关键事件的时髦顺序:

keydown(通常有默认操作,如fire click,submit或textInput events)

按键(如果键不仅仅是Shift或Ctrl等修饰键)

(keydown,keypress)如果用户按下按钮,则返回repeat = true

keydown的默认动作!!

KEYUP

这意味着您必须(在梳理HTML5和DOM 3事件草稿时)模拟浏览器本来会执行的大量操作。当我不得不这样做时,我讨厌它。例如,这大致是如何模拟输入或文本区域上的按键。

// DOM 3 Events

var dispatchKeyboardEvent = function(target, initKeyboradEvent_args) {

var e = document.createEvent("KeyboardEvents");

e.initKeyboardEvent.apply(e, Array.prototype.slice.call(arguments, 1));

target.dispatchEvent(e);

};

var dispatchTextEvent = function(target, initTextEvent_args) {

var e = document.createEvent("TextEvent");

e.initTextEvent.apply(e, Array.prototype.slice.call(arguments, 1));

target.dispatchEvent(e);

};

var dispatchSimpleEvent = function(target, type, canBubble, cancelable) {

var e = document.createEvent("Event");

e.initEvent.apply(e, Array.prototype.slice.call(arguments, 1));

target.dispatchEvent(e);

};

var canceled = !dispatchKeyboardEvent(element,

'keydown', true, true,  // type, bubbles, cancelable

null,  // window

'h',  // key

0, // location: 0=standard, 1=left, 2=right, 3=numpad, 4=mobile, 5=joystick

'');  // space-sparated Shift, Control, Alt, etc.

dispatchKeyboardEvent(

element, 'keypress', true, true, null, 'h', 0, '');

if (!canceled) {

if (dispatchTextEvent(element, 'textInput', true, true, null, 'h', 0)) {

element.value += 'h';

dispatchSimpleEvent(element, 'input', false, false);

// not supported in Chrome yet

// if (element.form) element.form.dispatchFormInput();

dispatchSimpleEvent(element, 'change', false, false);

// not supported in Chrome yet

// if (element.form) element.form.dispatchFormChange();

}

}

dispatchKeyboardEvent(

element, 'keyup', true, true, null, 'h', 0, '');

我不认为可以在IE中模拟关键事件。

最后

以上就是激动春天为你收集整理的html模拟点击某个键盘按钮,如何使用JavaScript模拟按键或单击?的全部内容,希望文章能够帮你解决html模拟点击某个键盘按钮,如何使用JavaScript模拟按键或单击?所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部