2

我知道有办法检测 alt-click,但我很好奇 - 是否可以 alt-click 元素?

您可以调用 click 事件调用的函数,但假设我们正在处理一些系统,该系统动态生成函数并将其在呈现时放置在页面中(或其他一些疯狂的解释)。

4

2 回答 2

2

这可以在 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,这似乎不允许修饰键选项。

于 2012-06-19T07:24:54.670 回答
1

您可以手动触发事件。对于您的情况-您可以尝试触发一个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/

于 2012-06-19T06:47:02.987 回答