2015-04-01 33 views
1

使用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"); 
} 
+0

由于您只是在浏览器的JavaScript引擎中触发事件,而不是在处理所有Windows事件的Win32API中,所以无法从浏览器(至少是具有良好安全性的标准浏览器)工作。出于安全原因,这是故意的。你需要一个插件,比如ActiveX或者一些非标准化的浏览器,将事件提升到操作系统。 – ppumkin 2015-04-01 14:17:00

+0

我**希望** javascript永远不能做到这一点... – Alex 2015-04-01 14:18:36

+0

好吧,亚历克斯它可以,而不是在典型的浏览器,担心用户的安全。 – ppumkin 2015-04-01 14:19:34

回答

0

将不会从一个浏览器(至少一个标准具有良好的安全性)的工作,因为你做的是在浏览器的JavaScript引擎触发事件,而不是在处理所有的Windows事件的Win32API的。

出于安全考虑,这是故意的。

您需要一个插件,如ActiveX或某些非标准化的浏览器,将事件提升到操作系统。

+1

谢谢,我不会再花更多时间。 – martin 2015-04-01 14:29:04

+0

没问题的人。我知道这一点的原因是因为我花了几个小时试图破解浏览器来做类似的事情,但是在我信任的计算机上的Intranet应用程序中。它很难做到,但我们都知道为什么正确:)让坏人出去。祝你好运。 – ppumkin 2015-04-01 14:34:01

+0

那么我认为还没有办法知道粘滞键是打开还是关闭? – martin 2015-04-01 14:35:52