本例中敏感词ciku.txt放在C盘根目录下,采用的ActiveXObject插件获取本地文件内容。
使用此插件不需网上下插件,直接用如下js代码即可。
浏览器需修改interner安全选项的级别,启用ActiveX才能获取到代码中的ActiveXObject插件。
如下图所示:js代码实现如下:[removed] // -------------- 全局变量,用来判断文本域中是否包含脏词,默认为false,即不包含脏词------- var isDirty = false; //使用ActiveX读取本地文件获取dirt在JavaScript中,有时我们需要在用户提交表单时检查输入内容是否包含敏感词,以防止不当内容的发布。
本文介绍了一种使用ActiveXObject技术在IE浏览器中实现这一功能的方法。
ActiveXObject是Internet Explorer特有的,它允许JavaScript与本地操作系统交互,如读取本地文件。
我们需要在本地(例如C盘根目录)创建一个名为`ciku.txt`的文本文件,其中包含了我们定义的敏感词。
然后,通过JavaScript的ActiveXObject来读取这个文件的内容。
以下是关键的JavaScript代码:```javascriptvar isDirty = false;function readFile() { var fso = new ActiveXObject("Scripting.FileSystemObject"); var openF = fso.OpenTextFile("c:\\ciku.txt", 1); var cikuStr = openF.ReadAll(); return cikuStr;}````readFile()`函数使用`Scripting.FileSystemObject`对象打开并读取`ciku.txt`文件,然后将敏感词返回给其他函数处理。
当用户尝试提交表单时,会触发`submitForm1()`函数。
这个函数首先获取用户在表单文本域中输入的内容,然后检查是否包含敏感词。
如果发现敏感词,它会调用`filterWord()`函数替换敏感词,并弹出提示让用户确认是否继续提交。
如果用户确认,表单会被提交;
否则,提交操作会被取消。
`filterWord()`函数接收用户输入的内容,读取敏感词列表,然后对每个敏感词调用`filterOneWord()`函数进行替换。
`filterOneWord()`使用正则表达式和`replace()`方法将敏感词替换为星号("**")。
表单部分的HTML代码如下:```html<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>```需要注意的是,由于ActiveXObject是IE特有的,这种方法在其他非IE浏览器(如Chrome、Firefox、Safari或Edge)上无效。
为了实现跨浏览器兼容,可以考虑使用其他技术,如FileReader API(适用于现代浏览器)或者将敏感词库保存在服务器端,通过Ajax请求获取。
此外,为了使用ActiveXObject,用户需要在浏览器的安全设置中启用ActiveX控件,这可能带来安全风险,因此在实际应用中应谨慎使用,并确保对用户有明确的提示和说明。
2025/6/15 22:22:47
97KB
1