2014-01-23 186 views
0

我的情況是,在應用程序(HTML/XUL)有充分理由,以便與其他應用程序進行通信的一些功能鍵(F5,F7 & F9)鍵綁定鍵盤鍵。鼠標點擊模擬在JavaScript

現在我必須做出基於觸摸的界面相同的應用程序,而無需鍵盤和先進的觸摸事件。所有觸摸點擊實際上與鼠標點擊相同,我需要有3個按鈕/鏈接,其行爲與F5,FF9鍵相同。

不要問原因,我能說的是,我需要保持該鍵綁定。

我能分配上的鏈接點擊鼠標等被按下F-關鍵行動?

回答

2

在傑克的回答是大多數解決方案,基於我給整個答案,因爲不上乍一看這樣方便初學者修改功能。 這是從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; 
} 

現在我們把它叫做所需元素/事件被按下所需按鍵。第二個參數是所有選項都可改變的對象(在我的情況下,keyCodeArg:116只需要發送以模擬F5按鍵)。

document.getElementById(element).addEventListener('click', function() { 
    simulateKeyPress(this, {keyCodeArg: 116}); 
}); 

Mozilla開發者網絡擁有約KeyboardEventsinitKeyEvent的好文章。

1

有兩種方法可以做到這一點我猜。

最簡單的方法就是讓你的F鍵調用一個函數,並捕獲鼠標事件時,只需調用相同的功能。

另一個辦法是捕捉鼠標事件,並觸發一個F-按鍵事件。那就幾乎是這個問題的一個副本:

How to simulate a mouse click using JavaScript?

+0

Tnx,你已經導航到我的答案。我不得不付出一點努力,因爲這給了我自己的問題的確切答案,以幫助未來的人。 – swolfish