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 入门教程 [翻译] 推荐
Aug 17 Javascript
理解Javascript_08_函数对象
Oct 15 Javascript
JSON无限折叠菜单编写实例
Dec 16 Javascript
JS打开新窗口防止被浏览器阻止的方法
Jan 03 Javascript
jQuery操作属性和样式详解
Apr 13 Javascript
jquery遍历table的tr获取td的值实现方法
May 19 Javascript
AngularJs Forms详解及简单示例
Sep 01 Javascript
JS简单测试循环运行时间的方法
Sep 04 Javascript
jQuery事件详解
Feb 23 Javascript
javascript中的面向对象
Mar 30 Javascript
js实现时钟定时器
Mar 26 Javascript
JavaScript中reduce()的用法
May 11 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 smarty 二级分类代码和模版循环例子
2011/06/16 PHP
php中可能用来加密字符串的函数[base64_encode、urlencode、sha1]
2012/01/16 PHP
PHP 正则表达式常用函数
2014/08/17 PHP
php常用hash加密函数
2014/11/22 PHP
Laravel+jQuery实现AJAX分页效果
2016/09/14 PHP
Ubuntu 16.04中Laravel5.4升级到5.6的步骤
2018/12/07 PHP
利用了jquery的ajax实现二级联互动菜单
2013/12/02 Javascript
jquery实现手机发送验证码的倒计时代码
2014/02/12 Javascript
Bootstrap 网站实例之单页营销网站
2016/10/20 Javascript
Vue2.0实现将页面中表格数据导出excel的实例
2017/08/09 Javascript
Angular实现下拉框模糊查询功能示例
2018/01/03 Javascript
微信小程序自定义键盘 内部虚拟支付
2018/12/20 Javascript
nodejs同步调用获取mysql数据时遇到的大坑
2019/03/02 NodeJs
Javascript异步执行不按顺序解决方案
2020/04/30 Javascript
vue中解决微信html5原生ios虚拟键返回不刷新问题
2020/10/20 Javascript
vue编写简单的购物车功能
2021/01/08 Vue.js
Numpy中转置transpose、T和swapaxes的实例讲解
2018/04/17 Python
python实现校园网自动登录的示例讲解
2018/04/22 Python
Python的log日志功能及设置方法
2019/07/11 Python
Tensorflow tf.dynamic_partition矩阵拆分示例(Python3)
2020/02/07 Python
解决windows下python3使用multiprocessing.Pool出现的问题
2020/04/08 Python
Python连接Mysql进行增删改查的示例代码
2020/08/03 Python
Python 的 f-string 可以连接字符串与数字的原因解析
2021/02/20 Python
HTML5 canvas基本绘图之填充样式实现
2016/06/27 HTML / CSS
优秀毕业生自荐信范文
2014/01/01 职场文书
元旦晚会主持词
2014/03/24 职场文书
党性锻炼的心得体会
2014/09/03 职场文书
2014年最新版离婚协议书范本
2014/11/25 职场文书
逃课检讨书范文
2015/05/06 职场文书
费城故事观后感
2015/06/10 职场文书
2016国培研修心得体会
2016/01/08 职场文书
详解nginx.conf 中 root 目录设置问题
2021/04/01 Servers
Python实现机器学习算法的分类
2021/06/03 Python
Oracle11g r2 卸载干净重装的详细教程(亲测有效已重装过)
2021/06/04 Oracle
Python pandas读取CSV文件的注意事项(适合新手)
2021/06/20 Python
Python实现简单的俄罗斯方块游戏
2021/09/25 Python