禁用页面部分JavaScript方法的具体实现


Posted in Javascript onJuly 31, 2013

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

一、我的想法来源

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 相关文章推荐
一些主流JS框架中DOMReady事件的实现小结
Feb 12 Javascript
JS多物体 任意值 链式 缓冲运动
Aug 10 Javascript
jquery插件制作 手风琴Panel效果实现
Aug 17 Javascript
JS操作JSON方法总结(推荐)
Jun 14 Javascript
利用JS实现点击按钮后图片自动切换的简单方法
Oct 24 Javascript
基于vue实现分页/翻页组件paginator示例
Mar 09 Javascript
Vue Transition实现类原生组件跳转过渡动画的示例
Aug 19 Javascript
使用Angular CLI生成路由的方法
Mar 24 Javascript
利用js将ajax获取到的后台数据动态加载至网页中的方法
Aug 08 Javascript
后台使用freeMarker和前端使用vue的方法及遇到的问题
Jun 13 Javascript
jQuery treeview树形结构应用
Mar 24 jQuery
javascript Number 与 Math对象的介绍
Nov 17 Javascript
jquery 单引号和双引号的区别及使用注意
Jul 31 #Javascript
选择器中含有空格在使用示例及注意事项
Jul 31 #Javascript
在表单提交前进行验证的几种方式整理
Jul 31 #Javascript
cookie.js 加载顺序问题怎么才有效
Jul 31 #Javascript
ie8 不支持new Date(2012-11-10)问题的解决方法
Jul 31 #Javascript
JS实现QQ图片一闪一闪的效果小例子
Jul 31 #Javascript
javascript中直接写php代码的方法
Jul 31 #Javascript
You might like
CI框架Session.php源码分析
2014/11/03 PHP
Thinkphp 框架扩展之行为扩展原理与实现方法分析
2020/04/23 PHP
说说掌握JavaScript语言的思想前提想学习js的朋友可以看看
2009/04/01 Javascript
IFrame跨域高度自适应实现代码
2012/08/16 Javascript
原生js实现复制对象、扩展对象 类似jquery中的extend()方法
2014/08/30 Javascript
jQuery中get()方法用法实例
2014/12/27 Javascript
用JavaScript判断CSS浏览器类型前缀的两种方法
2015/10/08 Javascript
javascript定义类和类的实现实例详解
2015/12/01 Javascript
javascript插件开发的一些感想和心得
2016/02/28 Javascript
JS/jQ实现免费获取手机验证码倒计时效果
2016/06/13 Javascript
jQuery简单自定义图片轮播插件及用法示例
2016/11/21 Javascript
简单实现bootstrap导航效果
2017/02/07 Javascript
js实时监控文本框输入字数的实例代码
2018/01/18 Javascript
vue通过cookie获取用户登录信息的思路详解
2018/10/30 Javascript
微信小程序日历效果
2018/12/29 Javascript
js实现unicode码字符串与utf8字节数据互转详解
2019/03/21 Javascript
在layui.use 中自定义 function 的正确方法
2019/09/16 Javascript
修改NPM全局模式的默认安装路径的方法
2020/12/15 Javascript
用Python写飞机大战游戏之pygame入门(4):获取鼠标的位置及运动
2015/11/05 Python
JSON Web Tokens的实现原理
2017/04/02 Python
python删除文本中行数标签的方法
2018/05/31 Python
Django 多语言教程的实现(i18n)
2018/07/07 Python
pygame游戏之旅 载入小车图片、更新窗口
2018/11/20 Python
Python实现E-Mail收集插件实例教程
2019/02/06 Python
Python远程方法调用实现过程解析
2020/07/28 Python
Python爬虫分析微博热搜关键词的实现代码
2021/02/22 Python
基于html和CSS3制作酷炫的导航栏
2015/09/23 HTML / CSS
资生堂美国官网:Shiseido美国
2016/09/02 全球购物
瑞典领先的汽车零部件网上零售商:bildelaronline24.se
2017/01/12 全球购物
JD Sports澳洲官网:英国领先的运动鞋和运动时尚零售商
2020/02/15 全球购物
超越自我演讲稿
2014/05/21 职场文书
私人房屋买卖协议书
2014/10/04 职场文书
房产协议书范本
2014/10/18 职场文书
二审答辩状范文
2015/05/22 职场文书
漫改真人电影「萌系男友是燃燃的橘色」公开先导视觉图
2022/03/21 日漫
游戏《我的世界》澄清Xbox版暂无计划加入光追
2022/04/03 其他游戏