本例中敏感词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

在IT行业中,ZTree是一款广泛应用于Web开发的前端插件,尤其在文件管理、权限控制等领域,它提供了强大的树形展示功能。
标题提到的“ztree的使用”着重于介绍如何在项目中集成和操作ZTree。
由于描述中提到了项目基于SSH(Spring、Struts2、Hibernate)框架,我们可以推测这是一个Java Web项目,ZTree在此类项目中常用于后台数据的前端展示。
ZTree的基础概念需要理解。
ZTree是一个基于jQuery的插件,它可以将静态或动态的数据结构渲染成交互式的树形视图。
它的主要特点包括节点的多级展示、可选的异步加载、丰富的事件机制以及自定义的节点样式和图标。
在SSH框架中使用ZTree,首先你需要在项目中引入ZTree的CSS和JavaScript文件。
这些文件通常可以从ZTree的官方网站下载,包含所需的样式表和脚本。
然后,在HTML页面中引入这些资源,并设置一个div元素作为ZTree的容器。
接下来,你需要准备ZTree的数据源。
在基于SSH的项目中,数据通常通过Ajax请求从后端获取。
数据格式应遵循ZTree的规范,一般为JSON格式,包含节点ID、父节点ID、节点文本等关键信息。
例如:```json[ { "id": "1", "pId": "0", "name": "父节点1" }, { "id": "1_1", "pId": "1", "name": "子节点1_1" }, { "id": "1_2", "pId": "1", "name": "子节点1_2" }]```在JavaScript中,你可以使用$.fn.zTree.init方法初始化ZTree,传入刚才创建的容器div和数据源。
同时,你还需要配置ZTree的参数,如是否启用异步加载、节点展开方式、是否允许拖拽等。
例如:```javascriptvar setting = { async: { enable: true, url: yourAjaxUrl, autoParam: [id], otherParam: {type: typeValue} }, data: { simpleData: { enable: true } }};var zNodes = []; // 前面准备的JSON数据$.fn.zTree.init($("#treeDemo"), setting, zNodes);```ZTree还提供了丰富的事件监听,如onClick、onDblClick等,你可以根据需要绑定相应的处理函数来实现节点点击后的业务逻辑。
例如:```javascriptvar treeObj = $.fn.zTree.getZTreeObj("treeDemo");treeObj.bind("onClick", function(event, treeId, treeNode) { console.log(点击了节点:, treeNode.id);});```此外,ZTree支持动态加载和异步数据获取,这对于大型数据集非常有用。
你可以通过配置async参数来开启异步加载,并指定获取数据的URL。
当用户展开节点时,ZTree会自动发送请求获取子节点数据。
“ztree的使用”涵盖了前端展示、后端数据交互、事件处理等多个方面。
理解ZTree的工作原理和配置选项,能够帮助你在SSH项目中构建出高效、交互性强的树形界面。
通过不断实践和优化,ZTree可以成为项目中不可或缺的一部分,提升用户体验并简化后台数据管理。
2025/6/15 22:18:37 17KB
1
简介:
在Android开发中,`DialogFragment`是Android SDK提供的一种用于创建弹出式对话框的组件。
它是`Fragment`的一个子类,与传统的`Dialog`相比,`DialogFragment`具有更多的优势,尤其是在处理屏幕旋转和生命周期管理方面。
本篇文章将深入探讨`DialogFragment`的核心概念、优点、使用方法以及常见应用场景。
`DialogFragment`简介:`DialogFragment`继承自`Fragment`,它不仅拥有`Fragment`的所有功能,还能展示一个模态对话框。
它将对话框和碎片的特性结合在一起,使得对话框可以在不同的屏幕配置下保持一致的行为,同时能够更好地适应Android应用的动态布局需求。
`DialogFragment`的优点:1. 生命周期管理:由于`DialogFragment`继承自`Fragment`,它拥有完整的生命周期回调,可以方便地处理如暂停、恢复、销毁等状态变化,使得对话框在不同场景下的行为更加可控。
2. 自动处理配置变更:当设备发生横竖屏切换时,`DialogFragment`会自动处理对话框的关闭和重新显示,而普通的`Dialog`则需要开发者手动处理。
3. 易于集成:`DialogFragment`可以像普通`Fragment`一样添加到Activity的布局中,也可以单独显示为对话框,增加了代码的复用性。
4. 更好的主题定制:`DialogFragment`支持自定义对话框样式,可以方便地调整对话框的外观和行为。
使用`DialogFragment`的步骤:1. 创建`DialogFragment`子类:你需要创建一个新的类,继承自`DialogFragment`,并重写必要的方法,如`onCreateDialog()`,在这个方法中构建你的对话框实例。
2. 实现`onCreateDialog()`:在这个方法中,你可以使用`AlertDialog.Builder`或自定义的`Dialog`来创建对话框,并设置其标题、消息、按钮等元素。
3. 显示`DialogFragment`:你可以通过`FragmentManager`和`FragmentTransaction`将`DialogFragment`添加到当前的Activity中,或者使用静态方法`show()`直接显示对话框。
示例代码:```javapublic class MyDialogFragment extends DialogFragment { @NonNull @Override public Dialog onCreateDialog(Bundle savedInstanceState) { AlertDialog.Builder builder = new AlertDialog.Builder(requireContext()); builder.setMessage("这是一条对话框消息") .setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // 确定按钮的点击事件 } }) .setNegativeButton("取消", null); return builder.create(); }}```在Activity中显示`DialogFragment`:```javaMyDialogFragment dialogFragment = new MyDialogFragment();dialogFragment.show(getSupportFragmentManager(), "my_dialog");````DialogFragment`的常见应用场景:- 提示用户确认操作,如删除、保存等。
- 展示设置选项或偏好设置。
- 获取用户输入,如登录、注册表单。
- 显示帮助信息或关于应用的详情。
总结来说,`DialogFragment`是Android开发中处理对话框的理想选择,它的灵活性、易用性和强大的功能使其在各种应用场合都能发挥出色的效果。
通过理解其工作原理和实践操作,开发者可以更高效地利用这一组件,提升应用的用户体验。
2025/6/15 19:58:08 1.42MB
1
多点触控缩放图像~解决网上某些demo的问题:图像缩小后反弹导致图像变形、缩放功能和onClick、onLongClick事件混乱等
2024/12/25 17:06:23 1.45MB 缩放 图片 多点触控 android
1
AxureRPPro是一个产品经理必备的交互原型设计工具,能够高效率制作产品原型,快速绘制线框图、流程图、网站架构图、示意图、HTML模版等。
AxureRPPro是专为RapidPrototypeDesign而生,它可以辅助产品经理快速设计完整的产品原型,并结合批注、说明以及流程图、框架图等元素将产品完整地表述给各方面设计人员,如UI、UE等等,并在讨论中不断完善。
作为办公自动化辅助工具,AxureRPPro更适合WebPrototype制作,AxureRP7Beta在AxureRP6基础上做了比较多的改进,旨在提高原型设计效率,包括重新组织界面功能、自适应视图、新增多个形状、样式、事件等,具体可见这里的介绍。
使用说明:2013/12/27更新版本为AxureRPPro7.0.0.3142(正式版)汉化绿色版,解压后先运行!)AxureRPPorable.exe完成初始化,然后执行主程序AxureRP.exe即可,新版本Axure7优化了界面和操作,明显了提高绘图效率,并可以直接预览(F5)而无需生成原型文件。
Axure7的汉化补丁由WebPPD社区best919制作,注意使用AxureRPPro7之前必须先安装.NETFramework4.0,并最好安装MicrosoftOfficeWord、Excel和PowerPoint文件格式兼容包。
知乎用户梁柱华总结的Axure7.0的新功能和新特性:增加了预览选项,能够设置在预览和生成原型时是否最小化或不带有左侧的站点地图导航;
优化了界面和操作,明显提高绘制效率,可直接在控件上改变形状,同时加入了几个常用形状;
支持了投影和内阴影,可以用来画简单的组件;
支持更多的触发事件,动态面板也可以onclick了;
普通形状也能增加事件效果,例如要移动一个形状,不需要转化成动态面板;
事件用例感觉也有所变化,增加了一些参数,例如切换动态面板状态时有更多的参数可以选择;
增加了和Justinmind一样的实时预览功能,再也不用一遍又一遍地生成页面了;
内容自适应,例如动态面板或文字块能根据内容自动适应到合适大小;
强化的表格功能Repeater,可以自动填充数据,对数据进行排序,过滤等操作;
页面级的参数Onreszie,这样在手机测试时可以作为横竖屏判断;
响应式布局,可以定义不同窗口大小下的布局结构。
AxureRPistheleadingtoolforrapidlycreatingwireframes,prototypesandspecificationsforapplicationsandwebsites.Quicklygetthebenefitsofprototypingwithoutalotofhassle.Axure7.0.0.3142更新日志:FixedsomemoreWebFontandTypefacescenariosonAxShareFixedclicksnotbubblingthroughobjectswhentheyhaveasatisfiedCondition
2024/10/22 12:38:37 6.97MB Axure 汉化 原型设计 产品经理
1
对于OnClick的自动注入
2023/11/1 18:08:13 305KB Android
1
///按钮拓展,可用于单击,双击,长按(单次),长按(间隔),按下,抬起,进入,移出事件,创建透明按钮(删去了网格不会触发dc,只调透明度的普通按钮会触发dc)。
///使用方法:场景中右键-UI-ButtonEx可创建普通拓展按钮,包含image以及text组件;
场景中右键-UI-ButtonEx_Transparent创建透明按钮,不包含image和text。
///代码调用:使用简便,获取UIbuttonExtension脚本之后直接.onClick(需要的事件).AddListener()即可。
///WriteByAlin
2023/6/13 0:26:29 7KB unity 开发工具 shader 游戏开发
1
BHO开发的一个小例子,文档对象事件响应,例如响应IHtmlDocument的Onclick事件等,帮助新手入门。
2023/6/5 6:56:31 11KB BHO IHtmlDocument onclick Event
1
//患上到纵情一个元素的纵情一个属性的之后的值---之后属性的位置值functiongetStyle(element,attr){returnwindow.getComputedStyle?window.getComputedStyle(element,null)[attr]:element.currentStyle[attr]||0;}//动画函数obj---要实施为画的货物json---要实施到的目的的参数货物fn为实施实现后的回调函数(能够再次挪用此方式依据上面格式传参--秩序实施多个动画)//挪用例://zIndex:1000//透明度opacity:数字尺度----小数---放大100倍//my$("btn1").onclick=function(){//varjson1={"width":400,"height":500,"left":500,"top":80,"opacity":0.2};//animate(my$("dv"),json1,function(){//varjson2={"width":40,"height":50,"left":0,"top":0,"opacity":1,"zIndex":1000}//animate(my$("dv"),json2,function(){依据此格式频频重复削减动画将会秩序实施});//});//};functionanimate(element,json,fn){clearInterval(element.timeId);//收拾按时器//按时器,返回的是按时器的idelement.timeId=setInterval(function(){varflag=true;//默许,假如,部份抵达目的//遍历json货物中的每一个属性另有属性对于应的目的值for(varattrinjson){//分辨这个属性attr中能否opacityif(attr=="opacity"){//患上到元素的之后的透明度,之后的透明度放大100倍varcurrent=getStyle(element,attr)*100;//目的的透明度放大100倍vartarget=json[attr]*100;varstep=(target-current)/10;step=step>0?Math.ceil(step):Math.floor(step);current+=step;//挪动后的值element.style[attr]=current/100;}elseif(attr=="zIndex"){//分辨这个属性attr中能否zIndex//层级窜改便是直接窜改这个属性的值element.style[attr]=json[attr];}else{//普通的属性//患上到元素这个属性的之后的值varcurrent=parseInt(getStyle(element,attr));//之后的属性对于应的目的值vartarget=json[attr];//挪动的步数varstep=(target-current)/10;step=step>0?Math.ceil(step):Math.floor(step);current+=step;//挪动后的值element.style[attr]=current+"px";}//能否抵达目的if(current!=target){flag=false;}}i
2023/4/22 10:14:06 3KB web animate
1
近来有许多大富翁朋友提出“如何在局域网内多播稳定传送大文件”的问题,为此我做了这个小程序供大家参考。
我的思路:传送文件有很多方法,我看到的大富翁上的朋友说过,用udp的方式不能稳定传送大文件,故我决定采用TCPIP方式。
同时考虑到速度,我提供了多线程创送的方式。
程序包中有两个文件夹:1)接收程序;
2)发送程序以下操作说明是针对单机操作的:1)将任意一个文件命名为“测试例子.rar”,然后放在发送程序目录下;
或者启动发送程序后再选择2)启动接收程序目录下的Server.exe程序3)启动发送程序目录下的MultiThreadDemo.exe程序4)在MultiThreadDemo.exe程序中,从“SynchronizationMethod”GroupBox中选择一种同步方法注意!!!!在单机操作时,只能选择Mutex方式5)在MultiThreadDemo.exe程序中,点击“创建同步对象”Button6)在MultiThreadDemo.exe程序中,点击“传送文件”Button7)传送完毕后,到接收程序目录下查看能否收到“测试例子.rar”针对局域网的操作,我没有做测试,以下是几点说明:1)自行修改“传送文件”Button的OnClick事件2)注意往不同的机子传送时,要为线程中的私有变量设置相应的IP地址和端口,同时将Server.exe拷贝到这台机子上3)可以进行异步创送,即NoSynchronization和Semaphore方式读者如果想使用该例子,建立进一步完善传送过程中的容错处理。
这是个demo程序,难免会有许多bug,希望读者原谅,同时把发现的问题和更好的思路发email给我。
黄晓斌hxb_leiyuan2000@163.net
2017/9/24 1:35:49 879KB DELPHI 下载 源代码 网络通信类
1
共 12 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡