国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

禁用頁面部分JavaScript不是全部而是部分

2024-05-06 16:08:23
字體:
供稿:網(wǎng)友
全部限制那是很簡單的事,直接把<script>腳本塊過濾掉就行了,但是部分限制又是如何做到的呢,下面我們一起來看看
 
 

本文討論的方法本人并沒有在實(shí)際項(xiàng)目中應(yīng)用過,因?yàn)槲疫€沒有遇到有這樣需要的項(xiàng)目,但試驗(yàn)發(fā)現(xiàn)可行。

一、我的想法來源

JavaScipt是好東西,它的出現(xiàn)讓網(wǎng)頁頁面表現(xiàn)形式更活潑,當(dāng)然好處絕不僅僅就這些,而近些年來紅紅火火的AJAX應(yīng)用更讓人開始重視JavaScipt小語言(好些程序牛人不把它看作語言,最多是腳本稱號(hào),甚至看不起搞腳本的人)的應(yīng)用。現(xiàn)在好些博客官網(wǎng)開放腳本權(quán)限,允許用戶自定義腳本來豐富自己的空間,特別像一些技術(shù)類專業(yè)博客,提供了相當(dāng)寬松的開發(fā)環(huán)境。但是我們也發(fā)現(xiàn)好些博客會(huì)對(duì)某些腳本方法作限制。注意,我這里說的是部分限制,如果是全部限制那是很簡單的事,直接把<script>腳本塊過濾掉就行了,但是部分限制又是如何做到的呢?

因?yàn)槲以谥暗捻?xiàng)目中沒有遇到這樣的問題,所以也沒有作過多的深入研究,一開始只是憑感覺想到用“替換”方法。很顯然這樣的方法行不通,因?yàn)榭赡軙?huì)出錯(cuò)。比如我要禁用alert方法,現(xiàn)有下面那段代碼:
window.alert('Some message');

現(xiàn)在要讓上面那段代碼失效,只要讓alert變一下就行了,比如把它全部改成大寫ALERT,這樣又肯定會(huì)報(bào)腳本錯(cuò)誤的,但還是可以用try{}catch{}把ALERT包含起來,但這對(duì)禁用語包的識(shí)別又是一大難題,而且還會(huì)有這樣的錯(cuò)誤:把document.write('alert some message');中的alert也替換了。

后來我想到了方法重寫,重寫要禁用的方法,并讓它什么也不做,結(jié)果證明真的可行,但并不知道是不是一個(gè)科學(xué)的方法,我拿出來與大家共同討論一下。

二、具體實(shí)現(xiàn)

先看下面的代碼,實(shí)現(xiàn)了對(duì)“alert”,“write”兩個(gè)方法的禁用:

window.alert=function(){}document.write=function(){}window.alert('Alert some message');document.write('Write some message');

看起來真的很簡單,在實(shí)際應(yīng)用的時(shí)候,把前面兩行單獨(dú)抽出來存在一個(gè)外部JS文件中,并在需要過濾JavaScript方法的頁面先加載這個(gè)JS文件(也可以在用戶編輯內(nèi)容塊的前一行加載這個(gè)腳本,這樣之前的HTML塊中我們管理員或網(wǎng)頁制作者還是可以用將要被禁用的方法),這樣之后調(diào)用被禁用的方法是不起作用的了。

注意:最后提醒一下,還要禁用部分DOM操作方法,比如remove()方法,因?yàn)橛脩艨梢杂肈OM的操作方法移除你一開始加載的那個(gè)JS文件。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 班玛县| 乐东| 大同市| 界首市| 大姚县| 乌兰浩特市| 郎溪县| 佛山市| 云安县| 县级市| 清流县| 阳城县| 清涧县| 凯里市| 潢川县| 赣榆县| 留坝县| 九龙县| 宜黄县| 秦安县| 毕节市| 佛教| 滨州市| 桦甸市| 宾川县| 沙湾县| 漯河市| 文安县| 新巴尔虎左旗| 富民县| 县级市| 新津县| 江口县| 盈江县| 旬邑县| 瓮安县| 桦南县| 泾源县| 思茅市| 宣化县| 吴川市|