鼠标单击模拟JavaScript中的键盘键

问题描述 投票:0回答:2

我有一种情况,在应用程序(HTML / XUL)中,某些功能键(F5F7F9)具有键绑定以便与某些其他应用程序通信。” >

现在,我必须为同一应用程序创建基于触摸的界面,而没有键盘和高级触摸事件。所有触摸单击实际上都与鼠标单击相同,并且我需要具有3个与F5

F7F9键相同的按钮/链接。”>

不要问原因,我只能说我需要保留这些键绑定。

我是否可以分配鼠标单击链接来像按F键一样操作?

我有一种情况,在应用程序(HTML / XUL)中,某些功能键(F5,F7和F9)具有键绑定,以便与某些其他应用程序进行通信。现在我必须进行基于触摸的...

javascript keyboard touch dom-events key-bindings
2个回答
2
投票

Jake的答案是大多数解决方案,并在此基础上给出了整个答案,因为初学者乍一看修改功能并不容易。这是从this thread中修改的功能:

function simulateKeyPress(target, options) {
    var event = target.ownerDocument.createEvent('KeyEvents'),
        options = options || {};

    // Set your options or || default values
    var opts = {
        type: options.type                  || "keypress",
        bubbles: options.bubbles            || true,
        cancelable: options.cancelable      || true,
        viewArg: options.viewArg            || null,
        ctrlKeyArg: options.ctrlKeyArg      || false,
        altKeyArg: options.altKeyArg        || false,
        shiftKeyArg: options.shiftKeyArg    || false,
        metaKeyArg: options.metaKeyArg      || false,
        keyCodeArg: options.keyCodeArg      || 0,
        charCodeArg: options.charCodeArg    || 0
    }

    // Pass in the options
    event.initKeyEvent(
        opts.type,
        opts.bubbles,
        opts.cancelable,
        opts.viewArg,
        opts.ctrlKeyArg,
        opts.altKeyArg,
        opts.shiftKeyArg,
        opts.metaKeyArg,
        opts.keyCodeArg,
        opts.charCodeArg
    );

    // Fire the event
    target.dispatchEvent(event);
    event.stopPropagation;
}

1
投票

我猜有两种方法可以做到这一点。

© www.soinside.com 2019 - 2024. All rights reserved.