使用Javascript按住Alt键单击元素

时间:2012-06-19 06:34:18

标签: javascript click alt

我知道有很多方法可以检测到alt-click,但我很好奇 - 是否有可能点击一个元素?

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

2 个答案:

答案 0 :(得分:2)

这可以使用initMouseEvent

在vanilla JS中完成
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,但似乎不允许使用修饰键选项。

答案 1 :(得分: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/