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学习笔记7 原型链的原理
Jan 11 Javascript
jQuery setTimeout()函数使用方法
Apr 07 Javascript
js触发select onchange事件的小技巧
Aug 05 Javascript
js修改onclick动作的四种方法(推荐)
Aug 18 Javascript
JS常用加密编码与算法实例总结
Dec 22 Javascript
JavaScript实现同一个页面打开多张图片
Dec 29 Javascript
JS百度地图搜索悬浮窗功能
Jan 12 Javascript
AngularJS中使用ngModal模态框实例
May 27 Javascript
JavaScript 处理树数据结构的方法示例
Jun 16 Javascript
layui点击数据表格添加或删除一行的例子
Sep 12 Javascript
layui的布局和表格的渲染以及动态生成表格的方法
Sep 18 Javascript
layui.tree组件的使用以及搜索节点功能的实现
Sep 26 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数据结构与算法(PHP描述) 查找与二分法查找
2012/06/21 PHP
一个简单且很好用的php分页类
2013/10/26 PHP
php弹出对话框实现重定向代码
2014/01/23 PHP
PHP中FTP相关函数小结
2016/07/15 PHP
Laravel框架使用Redis的方法详解
2018/05/30 PHP
slice函数的用法 之不错的应用
2006/12/29 Javascript
JavaScript 基础篇之运算符、语句(二)
2012/04/07 Javascript
解析jQuery与其它js(Prototype)库兼容共存
2013/07/04 Javascript
js形成页面的一种遮罩效果实例代码
2014/01/04 Javascript
原生javascript实现图片滚动、延时加载功能
2015/01/12 Javascript
js简单抽奖代码
2015/01/16 Javascript
基于JavaScript实现快速转换文本语言(繁体中文和简体中文)
2016/03/07 Javascript
jQuery基础知识点总结(必看)
2016/05/31 Javascript
JS匿名函数实例分析
2016/11/26 Javascript
react-native-tab-navigator组件的基本使用示例代码
2017/09/07 Javascript
使用Bootstrap和Vue实现用户信息的编辑删除功能
2017/10/25 Javascript
浅谈webpack打包过程中因为图片的路径导致的问题
2018/02/21 Javascript
详解vue服务端渲染浏览器端缓存(keep-alive)
2018/10/12 Javascript
详解小程序如何避免多次点击,重复触发事件
2019/04/08 Javascript
详解Vue3.0 前的 TypeScript 最佳入门实践
2019/06/18 Javascript
全面解析js中的原型,原型对象,原型链
2021/01/25 Javascript
[52:41]OG vs IG 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/20 DOTA
[00:43]拉比克至宝魔导师密钥展示
2018/12/20 DOTA
详解Python下载图片并保存本地的两种方式
2019/05/15 Python
Pycharm小白级简单使用教程
2020/01/08 Python
tensorflow 初始化未初始化的变量实例
2020/02/06 Python
Python yield的用法实例分析
2020/03/06 Python
利用 Python ElementTree 生成 xml的实例
2020/03/06 Python
Python线程协作threading.Condition实现过程解析
2020/03/12 Python
Python使用内置函数setattr设置对象的属性值
2020/10/16 Python
python产生模拟数据faker库的使用详解
2020/11/04 Python
详解CSS3的box-shadow属性制作边框阴影效果的方法
2016/05/10 HTML / CSS
英语专业毕业生自荐信
2013/10/28 职场文书
幼儿园中秋节活动总结
2015/03/23 职场文书
浅谈移动端中的视口(viewport)的具体使用
2021/04/13 HTML / CSS