使用JavaScript,我试图为用户提供一个选项来打开粘滞键。模拟打开Windows中的粘滞键
手动这可以通过按Shift键5次完成。
以下没有成功。还尝试将shiftKeyArg设置为true。
function stickyKeys() {
var keyboardEvent1 = document.createEvent("KeyboardEvent");
var initMethod = typeof keyboardEvent1.initKeyboardEvent !== 'undefined' ? "initKeyboardEvent" : "initKeyEvent";
keyboardEvent1[initMethod](
"keydown", // event type : keydown, keyup, keypress
true, // bubbles
true, // cancelable
window, // viewArg: should be window
false, // ctrlKeyArg
false, // altKeyArg
false, // shiftKeyArg
false, // metaKeyArg
16,
0
);
var keyboardEvent2 = document.createEvent("KeyboardEvent");
var initMethod = typeof keyboardEvent2.initKeyboardEvent !== 'undefined' ? "initKeyboardEvent" : "initKeyEvent";
keyboardEvent2[initMethod](
"keyup", // event type : keydown, keyup, keypress
true, // bubbles
true, // cancelable
window, // viewArg: should be window
false, // ctrlKeyArg
false, // altKeyArg
false, // shiftKeyArg
false, // metaKeyArg
16,
0
);
document.dispatchEvent(keyboardEvent1);
document.dispatchEvent(keyboardEvent2);
document.dispatchEvent(keyboardEvent1);
document.dispatchEvent(keyboardEvent2);
document.dispatchEvent(keyboardEvent1);
document.dispatchEvent(keyboardEvent2);
document.dispatchEvent(keyboardEvent1);
document.dispatchEvent(keyboardEvent2);
document.dispatchEvent(keyboardEvent1);
document.dispatchEvent(keyboardEvent2);
alert("sticky keys on");
}
由于您只是在浏览器的JavaScript引擎中触发事件,而不是在处理所有Windows事件的Win32API中,所以无法从浏览器(至少是具有良好安全性的标准浏览器)工作。出于安全原因,这是故意的。你需要一个插件,比如ActiveX或者一些非标准化的浏览器,将事件提升到操作系统。 – ppumkin 2015-04-01 14:17:00
我**希望** javascript永远不能做到这一点... – Alex 2015-04-01 14:18:36
好吧,亚历克斯它可以,而不是在典型的浏览器,担心用户的安全。 – ppumkin 2015-04-01 14:19:34