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 冒号 使用说明
Jun 06 Javascript
JS 弹出层 定位至屏幕居中示例
May 21 Javascript
jQuery插件实现控制网页元素动态居中显示
Mar 24 Javascript
IONIC自定义subheader的最佳解决方案
Sep 22 Javascript
JavaScript之Vue.js【入门基础】
Dec 06 Javascript
详解Angualr 组件间通信
Jan 21 Javascript
jQuery插件echarts实现的循环生成图效果示例【附demo源码下载】
Mar 04 Javascript
jQuery鼠标悬停内容动画切换效果
Apr 27 jQuery
基于Vue实现关键词实时搜索高亮显示关键词
Jul 21 Javascript
vue组件挂载到全局方法的示例代码
Aug 02 Javascript
jQuery 动画与停止动画效果实例详解
May 19 jQuery
解决vuex数据页面刷新后初始化操作
Jul 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
建立动态的WML站点(二)
2006/10/09 PHP
php使用QueryList轻松采集js动态渲染页面方法
2018/09/11 PHP
Laravel 前端资源配置教程
2019/10/18 PHP
Laravel Eloquent分表方法并使用模型关联的实现
2019/11/25 PHP
JavaScript中的事件处理
2008/01/16 Javascript
CCPry JS类库 代码
2009/10/30 Javascript
Jquery 模板数据绑定插件的使用方法详解
2013/07/08 Javascript
jquery $(&quot;#variable&quot;) 循环改变variable的值示例
2014/02/23 Javascript
jquery制作select列表双向选择示例代码
2014/09/02 Javascript
简单谈谈javascript代码复用模式
2015/01/28 Javascript
js简单实现标签云效果实例
2015/08/06 Javascript
Javascript实现图片懒加载插件的方法
2016/10/20 Javascript
jQuery自定义插件详解及实例代码
2016/12/29 Javascript
原生JS实现层叠轮播图
2017/05/17 Javascript
JS写XSS cookie stealer来窃取密码的步骤详解
2017/11/20 Javascript
Vue + Vue-router 同名路由切换数据不更新的方法
2017/11/20 Javascript
vue微信分享的实现(在当前页面分享其他页面)
2019/04/16 Javascript
Js on及addEventListener原理用法区别解析
2020/07/11 Javascript
JavaScript通如何过RGraph实现动态仪表盘
2020/10/15 Javascript
Javascript Symbol原理及使用方法解析
2020/10/22 Javascript
[19:54]夜魇凡尔赛茶话会 第一期02:看图识人
2021/03/11 DOTA
写了个监控nginx进程的Python脚本
2012/05/10 Python
Python字符串切片操作知识详解
2016/03/28 Python
Python 含参构造函数实例详解
2017/05/25 Python
对pandas处理json数据的方法详解
2019/02/08 Python
Python3 使用map()批量的转换数据类型,如str转float的实现
2019/11/29 Python
python2和python3哪个使用率高
2020/06/23 Python
属性与 @property 方法让你的python更高效
2020/09/21 Python
Python request post上传文件常见要点
2020/11/20 Python
学校卫生检查制度
2014/02/03 职场文书
保卫钓鱼岛口号
2014/06/20 职场文书
离婚协议书范文2014(夫妻感情破裂)
2014/12/14 职场文书
爱心募捐通知范文
2015/04/27 职场文书
幼儿园亲子活动感想
2015/08/07 职场文书
原来闭幕词是这样写的呀!
2019/07/01 职场文书
SQL Server #{}可以防止SQL注入
2022/05/11 SQL Server