我知道有办法检测 alt-click,但我很好奇 - 是否可以 alt-click 元素?
您可以调用 click 事件调用的函数,但假设我们正在处理一些系统,该系统动态生成函数并将其在呈现时放置在页面中(或其他一些疯狂的解释)。
我知道有办法检测 alt-click,但我很好奇 - 是否可以 alt-click 元素?
您可以调用 click 事件调用的函数,但假设我们正在处理一些系统,该系统动态生成函数并将其在呈现时放置在页面中(或其他一些疯狂的解释)。
这可以在 vanilla JS 中使用initMouseEvent
:
event.initMouseEvent(type, canBubble, cancelable, view,
detail, screenX, screenY, clientX, clientY,
ctrlKey, altKey, shiftKey, metaKey,
button, relatedTarget);
如您所见,参数 10 到 13 将修饰键应用于以编程方式触发的鼠标事件。上面链接的 MDN 页面有一个关于如何initMouseEvent
实际使用的小例子:
function simulateClick() {
// create a new mouse event
var evt = document.createEvent("MouseEvents");
// initialize all the parameters of the event
evt.initMouseEvent("click", true, true, window,
0, 0, 0, 0, 0,
false, false, false, false, // ctrl, alt, shift, meta
0, null);
var cb = document.getElementById("checkbox");
// actually fire the event on the `cb` element
var canceled = !cb.dispatchEvent(evt);
// if the event was cancelled...
if(canceled) {
//...
}
}
请注意,较旧的 IE 版本仅支持initEvent
,这似乎不允许修饰键选项。
您可以手动触发事件。对于您的情况-您可以尝试触发一个keydown
事件和一个click
事件。
这是使用 jQuery 触发事件的方法:
var e = jQuery.Event("keydown");
e.which = 9; // # Some key code value - in your case tab
$("input").trigger(e);
这是触发点击的方式:
$("#target").click();
JsFiddle:http: //jsfiddle.net/sagivo/Bdtpj/