方法重寫
重寫要禁用的方法
並讓它什麼也不做
結果證明真的可行
但並不知道是不是一個科學的方法
我拿出來與大家共同討論一下
本文討論的方法本人並沒有在實際項目中應用過因為我還沒有遇到有這樣需要的項目但試驗發現可行
一我的想法來源
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文件
From:http://tw.wingwit.com/Article/program/Java/JSP/201311/20270.html