监控页面所有input框的输入,并进行过滤

本文介绍如何利用JavaScript的querySelector和querySelectorAll方法监控页面上所有input的输入,进行过滤操作。这两个方法类似CSS选择器,简化了DOM查找,提升了效率。虽然在IE6、7不支持,但因其速度优势,仍被广泛使用。
第一次的解决方案:
function input_filter(){
	   var list=document.getElementsByTagName("input");
			//遍历所有符合条件的文本框,存储在strData
            var strData;
	        for(var i=0;i<list.length && list[i];i++)
              {
				
	           if (list[i].type == "text")
				 {
                                strData=list[i]; 
				strData.addEventListener('input',
					function(){
                          strData.value = filterXSS(strData.value);
                         }
						 ,false);	
						 
				 }
		      }


}	

对于这段代码,只能监控最后一个input的输入并进行过滤,然而在strData=list[i]; 后直接加alert(strData.id);省略addEventListener函数,则可以得到页面所有input的ID

第二种解决方案:

function input_filter(){
			document.querySelector('body').addEventListener('change', 
               function() {
                   var list=document.getElementsByTagName("input");
			      //遍历所有符合条件的文本框,存储在strData
                   var strData;
	               for(var i=0;i<list.length && list[i];i++)
                    {
			            if (list[i].type == "text")
				          {
                           strData=list[i];
				           strData.value = filterXSS(strData.value);
				          }
			        }
            }
         , false);
}   
		input_filter();

其中,关于querySelector有一篇文章写得不错http://www.nowamagic.net/librarys/veda/detail/388,原文前半部分如下:

在传统的 JavaScript 开发中,查找 DOM 往往是开发人员遇到的第一个头疼的问题,原生的 JavaScript 所提供的 DOM 选择方法并不多,仅仅局限于通过 tag, name, id 等方式来查找,这显然是远远不够的,如果想要进行更为精确的选择不得不使用看起来非常繁琐的正则表达式,或者使用某个库。事实上,现在所有的浏览器厂商都提供了 querySelector 和 querySelectorAll 这两个方法的支持,甚至就连微软也派出了 IE 8 作为支持这一特性的代表,querySelector 和 querySelectorAll 作为查找 DOM 的又一途径,极大地方便了开发者,使用它们,你可以像使用 CSS 选择器一样快速地查找到你需要的节点。

querySelector 和 querySelectorAll 的使用非常的简单,就像标题说到的一样,它和 CSS 的写法完全一样,对于前端开发人员来说,这是难度几乎为零的一次学习。假如我们有一个 id 为 test 的 DIV,为了获取到这个元素,你也许会像下面这样:

1 document.getElementById("test");

现在我们来试试使用新方法来获取这个 DIV:

1 document.querySelector("#test");
2 document.querySelectorAll("#test")[0];

下面是个小演示:

我是 id 为 test 的 div

感觉区别不大是吧,但如果是稍微复杂点的情况,原始的方法将变得非常麻烦,这时候 querySelector 和 querySelectorAll 的优势就发挥出来了。比如接下来这个例子,我们将在 document 中选取 class 为 test 的 div 的子元素 p 的第一个子元素,当然这很拗口,但是用本文的新方法来选择这个元素,比用言语来描述它还要简单。

1 document.querySelector("div.test>p:first-child");
2 document.querySelectorAll("div.test>p:first-child")[0];

下面是个小演示:

我是层里的 p 标签

现在应该对于 querySelector、querySelectorAll 方法中的参数已经非常明白了,是的,它接收的参数和 CSS 选择器完全一致。querySelector 和 querySelectorAll 的区别在于 querySelector 用来获取一个元素,而querySelectorAll 可以获取多个元素。querySelector 将返回匹配到的第一个元素,如果没有匹配的元素则返回 Null。querySelectorAll 返回一个包含匹配到的元素的数组,如果没有匹配的元素则返回的数组为空。在本文最后一个例子中,我们使用 querySelectorAll 给所有 class 为 emphasis 的元素加粗显示。

1 var emphasisText = document.querySelectorAll(".emphasis");
2 forvar i = 0 , j = emphasisText.length ; i < j ; i++ ){
3     emphasisText[i].style.fontWeight = "bold";
4 }

这是原生方法,比起jquery速度快,缺点是IE6、7不支持。





一个自动填写网页表单提交的工具软件,可同时监控提交后内容报警提示。自动填写表单内容,可以从文件读取内容自动填写到网页,支持验证码自动填写,填写完毕后自动提交。适合批量提交网页。定时提交可实现在无人值守时自动填表提交网页。完全模拟手工操作,展示实时页面及整个提交过程。程序可后台运行,完全不影响键盘鼠标操作。 程序广泛用于网站自动登录,自动注册用户,批量查询保存信息,批量数据录入等网页自动填写操作。 1、支持各种文本、列表、选择填写,多任务多操作连续提交,实现无人值守。 2、自动填写表单项,填写内容可以是固定值、也可以从文件中读取的内容。 3、支持图片验证码识别,对接远程打码模块,支持验证码快速自动识别输入 4、支持手机验证码自动输入,对接手机验证码平台 5、支持按钮提交、表单提交以及自定义脚本等多种提交方式交。 6、支持网页任意脚本删除、替换、注入、执行等。 7、提交时显示实时速度,自动统计提交效果与流量。 8、支持代理服务器,换IP提交。可导入大量免费代理服务器,可随机使用或环使用代理服务器,自动对代理服务器使用情况进行统计管理。 9、支持ADSL自动重拔号更换IP。 10、支持验证码手工快速录入,支持验证码云识别自动输入。 11、网页内容变化监控,包括脚本执行产生的变化。 12、网页内容关键字监控,同时监控多个关键字。 13、网页HTML元素级监控,同时监控多个元素,进行数据比较。 14、网络故障监控,本地网络故障时报警。 15、提交失败监控,网站服务器出现问题,或网页打不开时报警。 16、监控报警处置方式:弹出提示对话;声音提示;任务中止;启动新任务;启动外部处置程序;保存当前页面;程序关闭;自动关机。 WINXP,WIN2003用户安装必须安装补丁Microsoft .NET Framework 2.0 Service Pack 2 注意是SP2补丁. 声明:本软件不得用于非法用途,非法使用本软件与软件作者无关.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值