禁用页面部分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 prototype对象的属性说明
Mar 13 Javascript
关于可运行代码无法正常执行的使用说明
May 13 Javascript
用Javascript评估用户输入密码的强度实现代码
Nov 30 Javascript
基于JQuery 滑动与动画的说明介绍
Apr 18 Javascript
jquery动态添加删除div 具体实现
Jul 20 Javascript
jQuery实现单击按钮遮罩弹出对话框(仿天猫的删除对话框)
Apr 10 Javascript
全面了解构造函数继承关键apply call
Jul 26 Javascript
学习Javascript闭包(Closure)知识
Aug 07 Javascript
jquery如何实现点击空白处隐藏元素
Dec 05 jQuery
vue小白入门教程
Apr 02 Javascript
手动下载Chrome并解决puppeteer无法使用问题
Nov 12 Javascript
Javascript Worker子线程代码实例
Feb 20 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 获取文件权限函数介绍
2013/07/11 PHP
PHP实现上传图片到数据库并显示输出的方法
2018/05/31 PHP
6个常见的 PHP 安全性攻击实例和阻止方法
2020/12/16 PHP
angularJS 中$scope方法使用指南
2015/02/09 Javascript
jQuery实现Flash效果上下翻动的中英文导航菜单代码
2015/09/22 Javascript
教你如何终止JQUERY的$.AJAX请求
2016/02/23 Javascript
JavaScript操作HTML DOM节点的基础教程
2016/03/11 Javascript
用瀑布流的方式在网页上插入图片的简单实现方法
2016/09/23 Javascript
详解微信小程序开发之——wx.showToast(OBJECT)的使用
2017/01/18 Javascript
Ajax跨域实现代码(后台jsp)
2017/01/21 Javascript
Nodejs读取文件时相对路径的正确写法(使用fs模块)
2017/04/27 NodeJs
axios进阶实践之利用最优雅的方式写ajax请求
2017/12/20 Javascript
微信小程序实现保存图片到相册功能
2018/11/30 Javascript
微信小程序开发之点击按钮退出小程序的实现方法
2019/04/26 Javascript
原生js实现针对Dom节点的CRUD操作示例
2019/08/26 Javascript
layui动态加载多表头的实例
2019/09/05 Javascript
[01:10]DOTA2亚洲邀请赛 征战号角响彻全场
2015/01/06 DOTA
python脚本内运行linux命令的方法
2015/07/02 Python
python2.7 json 转换日期的处理的示例
2018/03/07 Python
Python绘制正余弦函数图像的方法
2018/08/28 Python
Python3实现的简单工资管理系统示例
2019/03/12 Python
pyqt5与matplotlib的完美结合实例
2019/06/21 Python
Python 保存加载mat格式文件的示例代码
2020/08/04 Python
Python如何爬取b站热门视频并导入Excel
2020/08/10 Python
python xlsxwriter模块的使用
2020/12/24 Python
法国设计制造的扫帚和刷子:Andrée Jardin
2018/12/06 全球购物
家乐福台湾线上购物网:Carrefour台湾
2020/09/15 全球购物
如何进行Linux分区优化
2016/09/13 面试题
优良学风班总结材料
2014/02/08 职场文书
教师求职自荐信
2014/03/09 职场文书
高三毕业典礼主持词
2014/03/27 职场文书
遗产继承公证书
2014/04/09 职场文书
法英专业大学生职业生涯规划范文:衡外情,量己力!
2014/09/23 职场文书
党的群众路线教育实践活动个人自我剖析材料
2014/10/07 职场文书
2014小学一年级班主任工作总结
2014/12/05 职场文书
Spring Cloud Gateway去掉url前缀
2021/07/15 Java/Android