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 相关文章推荐
js操作二级联动实现代码
Jul 27 Javascript
JavaScript高级程序设计阅读笔记(六) ECMAScript中的运算符(二)
Feb 27 Javascript
深入领悟JavaScript中的面向对象
Nov 18 Javascript
JQuery的$和其它JS发生冲突的快速解决方法
Jan 24 Javascript
javascript截图 jQuery插件imgAreaSelect使用详解
May 04 Javascript
BootStrap表单时间选择器详解
May 09 Javascript
jQuery DOM节点的遍历方法小结
Aug 15 jQuery
JS与HTML结合实现流程进度展示条思路详解
Sep 03 Javascript
JavaScript常见事件对象与操作实例总结
Jan 05 Javascript
Vue项目路由刷新的实现代码
Apr 17 Javascript
jQuery实现购物车全功能
Jan 11 jQuery
详解js创建对象的几种方式和对象方法
Mar 01 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
基于mysql的bbs设计(二)
2006/10/09 PHP
php统计文章排行示例
2014/03/04 PHP
2014年最新推荐的10款 PHP 开发框架
2014/08/01 PHP
php使用fopen创建utf8编码文件的方法
2014/10/31 PHP
php post大量数据时发现数据丢失问题解决方法
2015/06/20 PHP
Thinkphp 框架扩展之驱动扩展实例分析
2020/04/27 PHP
CSS中简写属性要注意TRouBLe的顺序问题(避免踩坑)
2021/03/09 HTML / CSS
JavaScript的变量作用域深入理解
2009/10/25 Javascript
jQuery的实现原理的模拟代码 -4 重要的扩展函数 extend
2010/08/03 Javascript
用js调用迅雷下载代码的二种方法
2013/04/15 Javascript
jQuery JSON实现无刷新三级联动实例探讨
2013/05/28 Javascript
JAVASCRIPT模式窗口中下载文件无法接收iframe的流
2013/10/11 Javascript
jQuery web 组件 后台日历价格、库存设置的代码
2016/10/14 Javascript
js设置文字颜色的方法示例
2016/12/30 Javascript
微信JSAPI支付操作需要注意的细节
2017/01/10 Javascript
Node.js+Express+MySql实现用户登录注册功能
2017/07/10 Javascript
Bootstrap Table 在指定列中添加下拉框控件并获取所选值
2017/07/31 Javascript
layui操作列按钮个数和文字颜色的判断实例
2019/09/11 Javascript
python实现从字符串中找出字符1的位置以及个数的方法
2014/08/25 Python
Python遍历指定文件及文件夹的方法
2015/05/09 Python
python中list列表的高级函数
2016/05/17 Python
python使用两种发邮件的方式smtp和outlook示例
2017/06/02 Python
Python解析并读取PDF文件内容的方法
2018/05/08 Python
python批量从es取数据的方法(文档数超过10000)
2018/12/27 Python
Python操作redis实例小结【String、Hash、List、Set等】
2019/05/16 Python
将python运行结果保存至本地文件中的示例讲解
2019/07/11 Python
Python常用数据类型之间的转换总结
2019/09/06 Python
python 五子棋如何获得鼠标点击坐标
2019/11/04 Python
波兰家具和室内装饰品购物网站:Vivre
2018/04/10 全球购物
智能家居、吸尘器、滑板车、电动自行车网上购物:Geekmaxi
2021/01/18 全球购物
大学生简历中个人的自我评价
2013/10/06 职场文书
文明风采获奖感言
2014/02/18 职场文书
业务员的岗位职责
2014/03/15 职场文书
国家助学金感谢信
2015/01/21 职场文书
导游词之日月潭
2019/11/05 职场文书
Python面试不修改数组找出重复的数字
2022/05/20 Python