方法重写
重写要禁用的方法
并让它什么也不做
结果证明真的可行
但并不知道是不是一个科学的方法
我拿出来与大家共同讨论一下
本文讨论的方法本人并没有在实际项目中应用过因为我还没有遇到有这样需要的项目但试验发现可行
一我的想法来源
JavaScipt 是好东西它的出现让网页页面表现形式更活泼当然好处绝不仅仅就这些而近些年来红红火火的AJAX应用更让人开始重视JavaScipt小语言(好些 程序牛人不把它看作语言最多是脚本称号甚至看不起搞脚本的人)的应用现在好些博客官网开放脚本权限允许用户自定义脚本来丰富自己的空间特别像一 些技术类专业博客提供了相当宽松的开发环境但是我们也发现好些博客会对某些脚本方法作限制注意我这里说的是部分限制如果是全部限制那是很简单的 事直接把<script>脚本块过滤掉就行了但是部分限制又是如何做到的呢?
因为我在之前的项目中没有遇到这样的问题所以也没有作过多的深入研究一开始只是凭感觉想到用“替换”方法很显然这样的方法行不通因为可能会出错比如我要禁用alert方法现有下面那段代码
复制代码 代码如下:
window
alert(
Some message
);
现 在要让上面那段代码失效只要让alert变一下就行了比如把它全部改成大写ALERT这样又肯定会报脚本错误的但还是可以用 try{}catch{}把ALERT包含起来但这对禁用语包的识别又是一大难题而且还会有这样的错误把 documentwrite(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文件