JS使用ActiveXObject实现用户提交表单时屏蔽敏感词功能


Posted in Javascript onJune 20, 2017

本例中敏感词ciku.txt放在C盘根目录下,采用的ActiveXObject插件获取本地文件内容。使用此插件不需网上下插件,直接用如下js代码即可。

浏览器需修改interner安全选项的级别,启用ActiveX才能获取到代码中的ActiveXObject插件。如下图所示:

JS使用ActiveXObject实现用户提交表单时屏蔽敏感词功能

js代码实现如下:

<script type="text/javascript">
    // -------------- 全局变量,用来判断文本域中是否包含脏词,默认为false,即不包含脏词-------
    var isDirty = false;
    //使用ActiveX读取本地文件获取dirtyword词库  
    function readFile(){    
      //var ForReading = 1; 
      var fso = new ActiveXObject("Scripting.FileSystemObject"); 
      openF = fso.OpenTextFile("c:\\ciku.txt", 1); 
      var cikuStr= openF.ReadAll(); 
      return cikuStr;
    }
    /*
    * 提交表单的主方法
    * 在提交表单的时候对内容进行过滤并在文本域显示过滤后的内容
    */
    function submitForm1() {
      var messageValue=document.getElementById("message").value;
      var cikuStr=readFile();
      var cikuArr= new Array();                 //定义数组,存储敏感词 
      cikuArr=cikuStr.split(" ");               //敏感字符分割          
      for (var i=0;i<cikuArr.length;i++){ 
        var flag=cikuArr[i];
        if(messageValue.indexOf(flag)>=0){          //查找文本域中是否包含敏感字符,是则替换
          filterWord(messageValue);         
          var ifs=confirm("你的留言中含有不恰当的词语,系统已自动为你修改,是否继续提交?");
          break;
        }else{                        //无敏感字符,直接提交表单
          document.getElementById("message_board").submit();
          break;
        }       
      }
      if(ifs){                        //用户点击确定,则提交表单
        document.getElementById("message_board").submit();
      }   
    }
    /*
    * 对传进来的messageValue过滤并返回新内容    
    */
    function filterWord(messageValue){
      // 根据文本域的id获取文本域对象内容
      var cikuStr=readFile();
      var cikuArr= new Array();                 //定义数组,存储敏感词 
      cikuArr=cikuStr.split(" ");               //敏感字符分割到数组内        
      for (var i=0;i<cikuArr.length;i++){ 
        messageValue=filterOneWord(messageValue,cikuArr[i]);//filterOneWord函数每次替换一个字符,需循环调用
      }     
      document.getElementById("message").value=messageValue; //将替换后的内容显示到文本域中  
    }
    /*
    * 这个函数用来过滤单个词语, 如果messageValue中含有oneDirtyWord, 则用"**"替换这个oneDirtyWord
    * messageValue --- 要过滤的语句
    */
    function filterOneWord(messageValue,oneDirtyWord){        
      var str=messageValue.replace(new RegExp(oneDirtyWord,'g'),"**");
      return str;          
    }
   </script>

     表单部分代码:

<body>
  <form name="message_board" id="message_board" action="aaa.html">
    <textarea name="message" id="message" cols="50" rows="10">
"This is you post messsage"
——phpdream 
    </textarea><br/>
    <input type="button" value="提交留言" id="submitMessage" onclick="submitForm1()"/>
  </form>
</body>
Javascript 相关文章推荐
DOMAssitant最新版 DOMAssistant 2.5发布
Dec 25 Javascript
JavaScript delete操作符应用实例
Jan 13 Javascript
IE6已终止操作问题的2种情况及解决
Apr 23 Javascript
jQuery中size()方法用法实例
Dec 27 Javascript
jQuery通过Ajax返回JSON数据
Apr 28 Javascript
jquery实现根据浏览器窗口大小自动缩放图片的方法
Jul 17 Javascript
CascadeView级联组件实现思路详解(分离思想和单链表)
Apr 12 Javascript
最棒的Angular2表格控件
Aug 10 Javascript
浅谈js中test()函数在正则中的使用
Aug 19 Javascript
JS简单获取当前年月日星期的方法示例
Feb 07 Javascript
Angular实现的简单查询天气预报功能示例
Dec 27 Javascript
基于vue-draggable 实现三级拖动排序效果
Jan 10 Javascript
20行js代码实现的贪吃蛇小游戏
Jun 20 #Javascript
详解vue-resource promise兼容性问题
Jun 20 #Javascript
ionic2自定义cordova插件开发以及使用(Android)
Jun 19 #Javascript
详解vue2.0 transition 多个元素嵌套使用过渡
Jun 19 #Javascript
vue中如何实现变量和字符串拼接
Jun 19 #Javascript
js实现随机数字字母验证码
Jun 19 #Javascript
解决vue-cli中stylus无法使用的问题方法
Jun 19 #Javascript
You might like
漂亮但不安全的CTB
2006/10/09 PHP
PHP获取QQ达人QQ信息的方法
2015/03/05 PHP
thinkPHP5.0框架整体架构总览【应用,模块,MVC,驱动,行为,命名空间等】
2017/03/25 PHP
浅谈PHP无限极分类原理
2019/03/14 PHP
ThinkPHP 5.x远程命令执行漏洞复现
2019/09/23 PHP
Dojo 学习要点
2010/09/03 Javascript
jQuery(1.6.3) 中css方法对浮动的实现缺陷分析
2011/09/09 Javascript
JQuery实现样式设置、追加、移除与切换的方法
2015/06/11 Javascript
实现非常简单的js双向数据绑定
2015/11/06 Javascript
AngularJS数据源的多种获取方式汇总
2016/02/02 Javascript
Javascript从数组中随机取出不同元素的两种方法
2016/09/22 Javascript
easyui简介_动力节点Java学院整理
2017/07/14 Javascript
vue项目中v-model父子组件通信的实现详解
2017/12/10 Javascript
《javascript少儿编程》location术语总结
2018/05/27 Javascript
mpvue+vuex搭建小程序详细教程(完整步骤)
2018/09/30 Javascript
layui实现数据分页功能
2019/07/27 Javascript
[06:33]DOTA2亚洲邀请赛小组赛第二日 TOP10精彩集锦
2015/01/31 DOTA
基于Django的ModelForm组件(详解)
2017/12/07 Python
利用numpy和pandas处理csv文件中的时间方法
2018/04/19 Python
python实现随机调用一个浏览器打开网页
2018/04/21 Python
Python解决八皇后问题示例
2018/04/22 Python
解决python3捕获cx_oracle抛出的异常错误问题
2018/10/18 Python
pyqt5 实现工具栏文字图片同时显示
2019/06/13 Python
Pytorch 实现数据集自定义读取
2020/01/18 Python
基于Keras中Conv1D和Conv2D的区别说明
2020/06/19 Python
Python tkinter实现日期选择器
2021/02/22 Python
MYSQL支持事务吗
2013/08/09 面试题
为什么Runtime.exec(“ls”)没有任何输出?
2014/10/03 面试题
军训感想500字
2014/02/20 职场文书
《观舞记》教学反思
2014/04/16 职场文书
捐款倡议书怎么写
2014/05/13 职场文书
网站推广策划方案
2014/06/04 职场文书
2015年党员自评材料
2014/12/17 职场文书
市场部岗位职责
2015/02/12 职场文书
施工安全责任协议书
2016/03/23 职场文书
教你怎么用Python处理excel实现自动化办公
2021/04/30 Python