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 相关文章推荐
JavaScript面向对象之体会[总结]
Nov 13 Javascript
JS模拟的QQ面板上的多级可展开的菜单
Oct 10 Javascript
手把手教你自己写一个js表单验证框架的方法
Sep 14 Javascript
腾讯的ip接口 方便获取当前用户的ip地理位置
Nov 25 Javascript
jquery中dom操作和事件的实例学习-表单验证
Nov 30 Javascript
js实现点击后将文字或图片复制到剪贴板的方法
Aug 04 Javascript
jQuery插件Timelinr 实现时间轴特效
Oct 04 Javascript
关于不同页面之间实现参数传递的几种方式讨论
Feb 13 Javascript
vue实现pdf导出解决生成canvas模糊等问题(推荐)
Oct 18 Javascript
解决vue单页面 回退页面 keeplive 缓存问题
Jul 22 Javascript
vue axios封装httpjs,接口公用配置拦截操作
Aug 11 Javascript
JS实现简单贪吃蛇小游戏
Oct 28 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
php 处理上百万条的数据库如何提高处理查询速度
2010/02/08 PHP
php获取字段名示例分享
2014/03/03 PHP
分享十款最出色的PHP安全开发库中文详细介绍
2015/03/22 PHP
php 二维数组快速排序算法的实现代码
2017/10/17 PHP
javascript继承之为什么要继承
2012/11/10 Javascript
深入document.write()与HTML4.01的非成对标签的详解
2013/05/08 Javascript
intro.js 页面引导简单用法 分享
2013/08/06 Javascript
JavaScript按位运算符的应用简析
2014/02/04 Javascript
jQuery 获取/设置/删除DOM元素的属性以a元素为例
2014/05/23 Javascript
jQuery实现图片向左向右切换效果的简单实例
2016/05/18 Javascript
浅谈javascript中关于日期和时间的基础知识
2016/07/13 Javascript
JS基于HTML5的canvas标签实现炫目的色相球动画效果实例
2016/08/24 Javascript
关于 jQuery Easyui异步加载tree的问题解析
2016/12/06 Javascript
javascript图片预览和上传(兼容IE)
2017/03/15 Javascript
浅谈React + Webpack 构建打包优化
2018/01/23 Javascript
vue发送websocket请求和http post请求的实例代码
2019/07/11 Javascript
vue-router 中 meta的用法详解
2019/11/01 Javascript
[52:09]2014 DOTA2华西杯精英邀请赛 5 25 NewBee VS DK第二场
2014/05/26 DOTA
python基于pyDes库实现des加密的方法
2017/04/29 Python
Python实现多进程共享数据的方法分析
2017/12/04 Python
python中的迭代和可迭代对象代码示例
2017/12/27 Python
Win10系统下安装labelme及json文件批量转化方法
2019/07/30 Python
keras Lambda自定义层实现数据的切片方式,Lambda传参数
2020/06/11 Python
澳大利亚当地最大的时装生产商:Cue
2018/08/06 全球购物
英国领先的维生素和营养补充剂直接供应商:Healthspan
2019/04/22 全球购物
毕业实习评语
2014/02/10 职场文书
环保倡议书怎么写
2014/05/16 职场文书
离婚协议书范本样本
2014/08/19 职场文书
个人授权委托书范本格式
2014/10/12 职场文书
党员作风建设整改方案
2014/10/27 职场文书
小学语文教师年度考核个人总结
2015/02/05 职场文书
银行先进个人总结
2015/02/15 职场文书
2015年感恩节活动总结
2015/03/24 职场文书
文案策划岗位个人自我评价(范文)
2019/08/08 职场文书
Go获取两个时区的时间差
2022/04/20 Golang
详细介绍MySQL中limit和offset的用法
2022/05/06 MySQL