我的情況是,在應用程序(HTML/XUL)有充分理由,以便與其他應用程序進行通信的一些功能鍵(F5,F7 & F9)鍵綁定鍵盤鍵。鼠標點擊模擬在JavaScript
現在我必須做出基於觸摸的界面相同的應用程序,而無需鍵盤和先進的觸摸事件。所有觸摸點擊實際上與鼠標點擊相同,我需要有3個按鈕/鏈接,其行爲與F5,FF9鍵相同。
不要問原因,我能說的是,我需要保持該鍵綁定。
我能分配上的鏈接點擊鼠標等被按下F-關鍵行動?
我的情況是,在應用程序(HTML/XUL)有充分理由,以便與其他應用程序進行通信的一些功能鍵(F5,F7 & F9)鍵綁定鍵盤鍵。鼠標點擊模擬在JavaScript
現在我必須做出基於觸摸的界面相同的應用程序,而無需鍵盤和先進的觸摸事件。所有觸摸點擊實際上與鼠標點擊相同,我需要有3個按鈕/鏈接,其行爲與F5,FF9鍵相同。
不要問原因,我能說的是,我需要保持該鍵綁定。
我能分配上的鏈接點擊鼠標等被按下F-關鍵行動?
在傑克的回答是大多數解決方案,基於我給整個答案,因爲不上乍一看這樣方便初學者修改功能。 這是從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開發者網絡擁有約KeyboardEvents和initKeyEvent的好文章。
有兩種方法可以做到這一點我猜。
最簡單的方法就是讓你的F鍵調用一個函數,並捕獲鼠標事件時,只需調用相同的功能。
另一個辦法是捕捉鼠標事件,並觸發一個F-按鍵事件。那就幾乎是這個問題的一個副本:
Tnx,你已經導航到我的答案。我不得不付出一點努力,因爲這給了我自己的問題的確切答案,以幫助未來的人。 – swolfish