禁用页面部分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获取GridView中用户点击控件的行号,列号
Apr 14 Javascript
html数组字符串拼接的最快方法
Sep 16 Javascript
从数据结构的角度分析 for each in 比 for in 快的多
Jul 07 Javascript
JS动态改变表格边框宽度的方法
Mar 31 Javascript
JS控制FileUpload的上传文件类型实例代码
Oct 07 Javascript
JavaScript实现创建自定义对象的常用方式总结
Jul 09 Javascript
Bootstrap Fileinput 4.4.7文件上传实例详解
Jul 25 Javascript
JavaScript原型链与继承操作实例总结
Aug 24 Javascript
vue-cli 3.0 自定义vue.config.js文件,多页构建的方法
Sep 19 Javascript
解决VUE双向绑定失效的问题
Oct 29 Javascript
node使用async_hooks模块进行请求追踪
Jan 28 Javascript
Vue和Flask通信的实现
May 19 Vue.js
让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实现paypal 授权登录
2015/05/28 PHP
php自定义函数实现汉字转换utf8编码的方法
2016/09/29 PHP
返回对象在当前级别中是第几个元素的实现代码
2011/01/20 Javascript
IE6下opacity与JQuery的奇妙结合
2013/03/01 Javascript
使用js显示当前时间示例
2014/03/02 Javascript
IE下使用jQuery重置iframe地址时内存泄露问题解决办法
2015/02/05 Javascript
纯javascript判断查询日期是否为有效日期
2015/08/24 Javascript
详解webpack 配合babel 将es6转成es5 超简单实例
2017/05/02 Javascript
详解JavaScript中return的用法
2017/05/08 Javascript
详解vue 模版组件的三种用法
2017/07/21 Javascript
jQuery:unbind方法的使用详解
2017/08/14 jQuery
Vue表单类的父子组件数据传递示例
2018/05/03 Javascript
原生javascript实现连连看游戏
2019/01/03 Javascript
[44:40]Serenity vs Pain 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python 简易计算器程序,代码就几行
2009/08/29 Python
详解Python使用simplejson模块解析JSON的方法
2016/03/24 Python
使用python 和 lint 删除项目无用资源的方法
2017/12/20 Python
tensorflow中next_batch的具体使用
2018/02/02 Python
python opencv之SIFT算法示例
2018/02/24 Python
Python 实现取矩阵的部分列,保存为一个新的矩阵方法
2018/11/14 Python
用python建立两个Y轴的XY曲线图方法
2019/07/08 Python
Python django框架输入汉字,数字,字符生成二维码实现详解
2019/09/24 Python
Django项目中使用JWT的实现代码
2019/11/04 Python
python 画函数曲线示例
2019/12/04 Python
html5使用canvas实现弹幕功能示例
2017/09/11 HTML / CSS
cosme官方海外旗舰店:日本最大化妆品和美容产品的综合口碑网站
2017/01/18 全球购物
Dr.Jart+美国官网:韩国药妆品牌
2019/01/18 全球购物
德国高尔夫商店:Golfshop.de
2019/06/22 全球购物
财务分析个人的自荐书范文
2013/11/24 职场文书
大二学生学习个人自我评价
2014/01/19 职场文书
《美丽的黄昏》教学反思
2014/02/28 职场文书
暑期教师培训方案
2014/06/07 职场文书
企业领导对照检查材料
2014/08/20 职场文书
师范生见习报告
2014/10/31 职场文书
端午节寄语2015
2015/03/23 职场文书
使用python绘制横竖条形图
2022/04/21 Python