易截截图软件、单文件、免安装、纯绿色、仅160KB

阻止Javascript事件的默认行为


这几天,因为一个项目中的bug而头痛。
这是一个条码扫描程序,为了保证扫描工作的连续性,在页面中利用
Javascript自动捕获keydown事件,因为条码扫描枪在完成一次扫描任务后会触发回车键,所以,在keydown事件中判断是否
keyCode==13,然后触发页面中一个隐藏的按钮,提交此数据保存至服务器。
程序中,为条码输入文本框注册了类似这样的脚本:
if(event.keyCode==13){
document.getElementById('buttonClientID').click();
}


为开始时系统并未要求对条码进行校验,所以问题没有暴露,直到后来系统升级,对扫入的条码进行各种合理性判断,才发现有些不太对头。数据似乎进行了两次保
存,但页面看起来只做了一次回滚,所以,第一反应是服务器端的代码问题。但问题怪就怪在这里,提交数据的服务器代码是一个事务,要么成功,要么失败回滚,
但数据却是被成功保存了的,这让我百思不得其解。在花了大量时间对服务器代码进行改造却毫无进展之后,还是把目标放在了客户端,因为通过测试也能确定数据
有被重复提交的迹象。
经过大量的尝试后,终于找到了问题所在,原来,这和浏览器的事件处理模型有关。为了简化,这个
程序被限制在IE下工作。在IE中,响应一个事件的并非只有一个元素,处理的方法是所谓冒泡型事件,也就是从最特定的事件到最不特定的事件目标的顺序进行
触发,也就是按照DOM的层次结构不断地上升到顶端,这个概念被称作事件流。所以,在本程序中,扫描枪触发的回车事件,除了会执行JS指定的动作之外,还
会默认有其它一些元素去响应它,具体会触发哪些动作和页面布局有关。这种情况类似于在填写表单的时候,有些用户(特别是常用Excel的财务人员)会在填
写完一个文本框后习惯性地按下回车以换行,如果,未针对这种情况进行处理的话,很可能会触发提交表单的事件。对于直接键盘输入的程序很容易想到这个问题,扫描枪这种输入设备平时较少用到,晕。
解决的方法很简单,就是在脚本中加上这样一段代码:
event.returnValue=false;
这是在IE下,如果是Mozilla,则要调用preventDefault()方法。
这样,就能够阻止该事件的默认行为,而只去执行指定的动作。
经测试,Bug死了,程序活了。
******


相关文档:

Google 排名中的 10 个最著名的 JavaScript 库

ugmbbc发布于 2009-11-14 09:41:43| 7628 次阅读 字体:大 小 打印预览
var ReTitle = '回复:Google 排名中的 10 个最著名的 JavaScript 库';
感谢COMSHARP CMS的投递
新闻来源:tripwiremagazine.com
JavaScript 是 Web 开发与设计中不可或缺的东西,不管是一个简单的网页还是一个专业的站点,也不管你是高手还是菜鸟 ......

JavaScript中的字符串操作

 一、概述
    字符串在JavaScript中几乎无处不在,在你处理用户的输入数据的时候,在读取或设置DOM对象的属性时,在操作cookie时,当然还有更多...。JavaScript的核心部分提供了一组属性和方法用于通用的字符串操作,如分割字符串,改变字符串的大小写,操作子字符串等。
    当前的 ......

javascript解析XML

 首先创建解析对象:
try
{
xmldoc=new ActiveXObject("Microsoft.XMLDOM");//IE
}catch(e)
{
try{
xmldoc=document.implementation.createDocument("","",null);//非IE
}catch(e)
{
alert("无法创建对象!");
return;
}
}
xmldoc.async="false";
xmldoc.load(" ......

各种页面刷新代码大全,asp/javascript刷新页面代码

页面自动刷新代码大全,基本上所有要求自动刷新页面的代码都有,大家可以自由发挥做出完美的页面。
1)
10表示间隔10秒刷新一次
2)
<script>
window.location.reload(true);
</script>
如果是你要刷新某一个iframe就把window给换成frame的名字或ID号
3)
<script>
window.navigate("本页面url"); ......

javascript得到屏幕分辨率和网页可见区域等方法

 javascript得到屏幕分辨率和网页可见区域等方法   
<body><SCRIPT   LANGUAGE="JavaScript">...      
  var     s   =   "";      
  s&n ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号