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 相关文章推荐
js解析与序列化json数据(一)json.stringify()的基本用法
Feb 01 Javascript
js如何判断不同系统的浏览器类型
Oct 28 Javascript
jQuery实现表格颜色交替显示的方法
Mar 09 Javascript
AngularJS手动表单验证
Feb 01 Javascript
a标签跳转到指定div,jquery添加和移除class属性的实现方法
Oct 10 Javascript
css和js实现弹出登录居中界面完整代码
Nov 26 Javascript
JS随机数产生代码分享
Feb 24 Javascript
JavaScript中利用Array filter() 方法压缩稀疏数组
Feb 24 Javascript
vue的for循环使用方法
Feb 12 Javascript
JavaScript canvas实现跟随鼠标事件
Feb 10 Javascript
Node.js API详解之 readline模块用法详解
May 22 Javascript
解决vue-router路由拦截造成死循环问题
Aug 05 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操作MongoDB GridFS 存储文件的详解
2013/06/20 PHP
PHP获取一段文本显示点阵宽度和高度的方法
2015/03/12 PHP
php实现多城市切换特效
2015/08/09 PHP
PHP多进程编程总结(推荐)
2016/07/18 PHP
php 获取文件行数的方法总结
2016/10/11 PHP
PHP获取input输入框中的值去数据库比较显示出来
2016/11/16 PHP
Laravel中log无法写入问题的解决
2017/06/17 PHP
javascript 面向对象思想 附源码
2009/07/07 Javascript
jQuery 添加/移除CSS类实现代码
2010/02/11 Javascript
理解Javascript_15_作用域分配与变量访问规则,再送个闭包
2010/10/20 Javascript
Jquery图形报表插件 jqplot简介及参数详解
2012/10/10 Javascript
javascript 中that的含义示例介绍
2014/05/14 Javascript
基于JavaScript实现图片点击弹出窗口而不是保存
2016/02/06 Javascript
JavaScript实现弹出DIV层同时页面背景渐变成半透明效果
2016/03/25 Javascript
jquery 追加元素append、prepend、before、after用法与区别分析
2016/12/02 Javascript
three.js绘制地球、飞机与轨迹的效果示例
2017/02/28 Javascript
Vue2.0利用 v-model 实现组件props双向绑定的优美解决方案
2017/03/13 Javascript
JS+WCF实现进度条实时监测数据加载量的方法详解
2017/12/19 Javascript
JS+CSS实现滚动数字时钟效果
2017/12/25 Javascript
Vue.js轮播图走马灯代码实例(全)
2019/05/08 Javascript
layui监听单元格编辑前后交互的例子
2019/09/16 Javascript
使用Python3编写抓取网页和只抓网页图片的脚本
2015/08/20 Python
Python数组定义方法
2016/04/13 Python
利用Django提供的ModelForm增删改数据的方法
2019/01/06 Python
Django如何自定义model创建数据库索引的顺序
2019/06/20 Python
pymysql模块的操作实例
2019/12/17 Python
如何导出python安装的所有模块名称和版本号到文件中
2020/06/05 Python
python装饰器三种装饰模式的简单分析
2020/09/04 Python
pytorch简介
2020/11/11 Python
pymysql模块使用简介与示例
2020/11/17 Python
巴西儿童时尚购物网站:Dinda
2019/08/14 全球购物
动态密码技术
2012/10/18 面试题
MYSQL支持事务吗
2013/08/09 面试题
硕士毕业论文导师评语
2014/12/31 职场文书
利用Matlab绘制各类特殊图形的实例代码
2021/07/16 Python
微信小程序APP页面的之间的相互传递参数以及自定义组件
2022/04/19 Javascript