<body id="body" runat="server" onkeydown="return showKeyCode(event)">
现在每当我按下某个键时,IE8(或在comp模式下)都会抛出一个指向问题的异常 在第x行,恰好是我的身体标签。我怎么能防止这种情况? 据我所知,JS代码应该是IE comp。 (适用于Chrome) 此外,代码在IE和Firefox中不起作用(它不阻止F5和Enter)
- &GT;预期的对象
var version = navigator.appVersion;
function showKeyCode(e) {
var keycode = (window.event) ? event.keyCode : e.keyCode;
if ((version.indexOf('MSIE') != -1)) {
if (keycode == 13) {
event.keyCode = 0;
event.returnValue = false;
return false;
}
}
else {
if (keycode == 13) {
return false;
}
}
}
我面临的另一个问题是IE中的这个简单的JS&amp; FF(适用于Chrome):
没有任何事情发生 - &GT;预期的对象
<a onclick="ClearTextboxes();" title="Close" id="close" runat="server">Close</a>
....in script tags:
function ClearTextboxes() {
document.getElementById('<%= txtbox_name.ClientID %>').value = '';
document.getElementById('<%= txtbox_email.ClientID %>').value = '';
document.getElementById('<%= txtbox_content.ClientID %>').value = '';
document.getElementById('<%= ResultMail.ClientID %>').style.display = 'none';
}
答案 0 :(得分:2)
您的showKeyCode
功能中有很多不必要的代码。以下也会这样做;您已经保证e
会引用关键事件对象,因为您在event
属性中传递onkeydown
的方式,并且不需要任何浏览器嗅探一点都不return false
是在使用DOM0密钥处理程序时阻止浏览器默认操作的正确方法,因此不需要e.returnValue
。
你会遇到阻止F5的问题,除非你有一个非常好的理由,否则你不应该这样做,因为用户习惯于执行页面刷新。如果您将功能更改为以下内容,则没有理由不阻止Enter键的默认操作:
function showKeyCode(e) {
if (e.keyCode == 13) {
return false;
}
}