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 相关文章推荐
Jquery从头学起第四讲 jquery入门教程
Aug 01 Javascript
jQuery仿Excel表格编辑功能的实现代码
May 01 Javascript
jQuery使用post方法提交数据实例
Mar 25 Javascript
javascript实现框架高度随内容改变的方法
Jul 23 Javascript
JavaScript学习总结之JS、AJAX应用
Jan 29 Javascript
Node.js编写组件的三种实现方式
Feb 25 Javascript
js中数组结合字符串实现查找(屏蔽广告判断url等)
Mar 30 Javascript
Vue.js划分组件的方法
Oct 29 Javascript
Typescript 中的 interface 和 type 到底有什么区别详解
Jun 18 Javascript
使用layui的layer组件做弹出层的例子
Sep 27 Javascript
JavaScript获取当前url路径过程解析
Dec 27 Javascript
vue项目或网页上实现文字转换成语音播放功能
Jun 09 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调用mysql数据 dbclass类
2011/05/07 PHP
基于CI(CodeIgniter)框架实现购物车功能的方法
2018/04/09 PHP
解决laravel 表单提交-POST 异常的问题
2019/10/15 PHP
一个cssQuery对象 javascript脚本实现代码
2009/07/21 Javascript
Jquery replace 字符替换实现代码
2010/12/02 Javascript
JS分页控件 可用于无刷新分页
2013/07/23 Javascript
动态添加option及createElement使用示例
2014/01/26 Javascript
jQuery实现立体式数字滚动条增加效果
2016/12/21 Javascript
jQuery ajax实现省市县三级联动
2021/03/07 Javascript
推荐三款不错的图片压缩上传插件(webuploader、localResizeIMG4、LUploader)
2017/04/21 Javascript
vue.js声明式渲染和条件与循环基础知识
2017/07/31 Javascript
详解AngularJS跨页面传值(ui-router)
2017/08/23 Javascript
js 毫秒转天时分秒的实例
2017/11/17 Javascript
vue2.0实现前端星星评分功能组件实例代码
2018/02/12 Javascript
javaScript实现鼠标在文字上悬浮时弹出悬浮层效果
2020/04/12 Javascript
后台使用freeMarker和前端使用vue的方法及遇到的问题
2019/06/13 Javascript
浅谈Node新版本13.2.0正式支持ES Modules特性
2019/11/25 Javascript
实例讲解React 组件
2020/07/07 Javascript
在Python中测试访问同一数据的竞争条件的方法
2015/04/23 Python
简单谈谈Python流程控制语句
2016/12/04 Python
详解Python列表赋值复制深拷贝及5种浅拷贝
2019/05/15 Python
详解Python3除法之真除法、截断除法和下取整对比
2019/05/23 Python
django实现模板中的字符串文字和自动转义
2020/03/31 Python
python实现文字版扫雷
2020/04/24 Python
土木工程应届生求职信
2013/10/31 职场文书
毕业生的自我评价
2013/12/30 职场文书
厉行勤俭节约倡议书
2014/05/16 职场文书
暑期社会实践先进个人主要事迹
2014/05/22 职场文书
2014年预备党员学习新党章思想汇报
2014/09/15 职场文书
领导班子个人查摆问题对照检查材料
2014/10/02 职场文书
以权谋私检举信范文
2015/03/02 职场文书
检讨书范文
2019/04/16 职场文书
《雪域豹影》读后感:父爱的伟大
2019/12/23 职场文书
python必学知识之文件操作(建议收藏)
2021/05/30 Python
Pycharm远程调试和MySQL数据库授权问题
2022/03/18 MySQL
设置IIS Express并发数
2022/07/07 Servers