禁用页面部分JavaScript不是全部而是部分


Posted in Javascript onSeptember 03, 2014

本文讨论的方法本人并没有在实际项目中应用过,因为我还没有遇到有这样需要的项目,但试验发现可行。

一、我的想法来源

JavaScipt是好东西,它的出现让网页页面表现形式更活泼,当然好处绝不仅仅就这些,而近些年来红红火火的AJAX应用更让人开始重视JavaScipt小语言(好些程序牛人不把它看作语言,最多是脚本称号,甚至看不起搞脚本的人)的应用。现在好些博客官网开放脚本权限,允许用户自定义脚本来丰富自己的空间,特别像一些技术类专业博客,提供了相当宽松的开发环境。但是我们也发现好些博客会对某些脚本方法作限制。注意,我这里说的是部分限制,如果是全部限制那是很简单的事,直接把<script>脚本块过滤掉就行了,但是部分限制又是如何做到的呢?

因为我在之前的项目中没有遇到这样的问题,所以也没有作过多的深入研究,一开始只是凭感觉想到用“替换”方法。很显然这样的方法行不通,因为可能会出错。比如我要禁用alert方法,现有下面那段代码:
window.alert('Some message');

现在要让上面那段代码失效,只要让alert变一下就行了,比如把它全部改成大写ALERT,这样又肯定会报脚本错误的,但还是可以用try{}catch{}把ALERT包含起来,但这对禁用语包的识别又是一大难题,而且还会有这样的错误:把document.write('alert some message');中的alert也替换了。

后来我想到了方法重写,重写要禁用的方法,并让它什么也不做,结果证明真的可行,但并不知道是不是一个科学的方法,我拿出来与大家共同讨论一下。

二、具体实现

先看下面的代码,实现了对“alert”,“write”两个方法的禁用:

window.alert=function(){}
document.write=function(){}

window.alert('Alert some message');
document.write('Write some message');

看起来真的很简单,在实际应用的时候,把前面两行单独抽出来存在一个外部JS文件中,并在需要过滤JavaScript方法的页面先加载这个JS文件(也可以在用户编辑内容块的前一行加载这个脚本,这样之前的HTML块中我们管理员或网页制作者还是可以用将要被禁用的方法),这样之后调用被禁用的方法是不起作用的了。

注意:最后提醒一下,还要禁用部分DOM操作方法,比如remove()方法,因为用户可以用DOM的操作方法移除你一开始加载的那个JS文件。

Javascript 相关文章推荐
一个用javascript写的select支持上下键、首字母筛选以及回车取值的功能
Sep 09 Javascript
ASP.NET jQuery 实例17 通过使用jQuery validation插件校验ListBox
Feb 03 Javascript
jQuery 事件的命名空间简单了解
Nov 22 Javascript
与Math.pow 相反的函数使用介绍
Aug 04 Javascript
javascript中callee与caller的区别分析
Apr 20 Javascript
JS DOMReady事件的六种实现方法总结
Nov 23 Javascript
js+div+css下拉导航菜单完整代码分享
Dec 28 Javascript
Node.js使用Express创建Web项目详细教程
Mar 31 Javascript
Element UI框架中巧用树选择器的实现
Dec 12 Javascript
解决微信浏览器缓存站点入口文件(IIS部署Vue项目)
Jun 17 Javascript
Vue快速实现通用表单验证功能
Dec 05 Javascript
《javascript设计模式》学习笔记四:Javascript面向对象程序设计链式调用实例分析
Apr 07 Javascript
让JavaScript的Alert弹出框失效的方法禁止弹出警告框
Sep 03 #Javascript
JavaScript使用focus()设置焦点失败的解决方法
Sep 03 #Javascript
javascript实现浏览器窗口传递参数的方法
Sep 03 #Javascript
javascript模拟post提交隐藏地址栏的参数
Sep 03 #Javascript
javascript刷新父页面的各种方法汇总
Sep 03 #Javascript
判断在css加载完毕后执行后续代码示例
Sep 03 #Javascript
jQuery实现倒计时按钮功能代码分享
Sep 03 #Javascript
You might like
php 实现进制转换(二进制、八进制、十六进制)互相转换实现代码
2010/10/22 PHP
ThinkPHP框架搭建及常见问题(XAMPP安装失败、Apache/MySQL启动失败)
2016/04/15 PHP
PHP PDOStatement::fetchColumn讲解
2019/01/31 PHP
JavaScript 代码压缩工具小结
2012/02/27 Javascript
jquery根据属性和index来查找属性值并操作
2014/07/25 Javascript
JS扩展方法实例分析
2015/04/15 Javascript
使用JavaScript的AngularJS库编写hello world的方法
2015/06/23 Javascript
JQuery通过AJAX从后台获取信息显示在表格上并支持行选中
2015/09/15 Javascript
基于jquery实现的仿优酷图片轮播特效代码
2016/01/13 Javascript
jQuery Dialog 取消右上角删除按钮事件
2016/09/07 Javascript
js实现短信发送倒计时功能(正则验证)
2017/02/10 Javascript
让nodeJS支持ES6的词法----babel的安装和使用方法
2017/07/31 NodeJs
详解npm 配置项registry修改为淘宝镜像
2018/09/07 Javascript
jquery拖拽自动排序插件使用方法详解
2020/07/20 jQuery
详解使用WebPack搭建React开发环境
2019/08/06 Javascript
JavaScript实现HTML导航栏下拉菜单
2020/11/25 Javascript
用Python编程实现语音控制电脑
2014/04/01 Python
Python入门篇之面向对象
2014/10/20 Python
使用Python的Bottle框架写一个简单的服务接口的示例
2015/08/25 Python
Python正则表达式使用经典实例
2016/06/21 Python
Python第三方Window模块文件的几种安装方法
2018/11/22 Python
python实现宿舍管理系统
2019/11/22 Python
美国在线宠物商店:Chewy
2019/01/12 全球购物
美国摩托车头盔、零件、齿轮及配件商店:Cycle Gear
2019/06/12 全球购物
新西兰Bookabach:查找全球度假屋
2020/12/03 全球购物
医学生自荐信范文
2013/12/03 职场文书
关于礼仪的演讲稿
2014/01/04 职场文书
大学总结自我鉴定
2014/01/18 职场文书
小学生新学期寄语
2014/01/19 职场文书
投标保密承诺书
2014/05/19 职场文书
公证委托书
2014/08/01 职场文书
解除聘用合同证明书范本
2014/09/11 职场文书
运动员入场前导词
2015/07/20 职场文书
2015年法律事务部工作总结
2015/07/27 职场文书
导游词之峨眉乐山/兵马俑/北京故宫御花园
2019/09/03 职场文书
利用uni-app生成微信小程序的踩坑记录
2022/04/05 Javascript