禁用頁(yè)面部分JavaScript方法的具體實(shí)現(xiàn)
更新時(shí)間:2013年07月31日 17:23:30 作者:
方法重寫,重寫要禁用的方法,并讓它什么也不做,結(jié)果證明真的可行,但并不知道是不是一個(gè)科學(xué)的方法,我拿出來與大家共同討論一下
本文討論的方法本人并沒有在實(shí)際項(xiàng)目中應(yīng)用過,因?yàn)槲疫€沒有遇到有這樣需要的項(xiàng)目,但試驗(yàn)發(fā)現(xiàn)可行。
一、我的想法來源
JavaScipt是好東西,它的出現(xiàn)讓網(wǎng)頁(yè)頁(yè)面表現(xiàn)形式更活潑,當(dāng)然好處絕不僅僅就這些,而近些年來紅紅火火的AJAX應(yīng)用更讓人開始重視JavaScipt小語(yǔ)言(好些程序牛人不把它看作語(yǔ)言,最多是腳本稱號(hào),甚至看不起搞腳本的人)的應(yīng)用?,F(xiàn)在好些博客官網(wǎng)開放腳本權(quán)限,允許用戶自定義腳本來豐富自己的空間,特別像一些技術(shù)類專業(yè)博客,提供了相當(dāng)寬松的開發(fā)環(huán)境。但是我們也發(fā)現(xiàn)好些博客會(huì)對(duì)某些腳本方法作限制。注意,我這里說的是部分限制,如果是全部限制那是很簡(jiǎn)單的事,直接把<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ì)禁用語(yǔ)包的識(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');
看起來真的很簡(jiǎn)單,在實(shí)際應(yīng)用的時(shí)候,把前面兩行單獨(dú)抽出來存在一個(gè)外部JS文件中,并在需要過濾JavaScript方法的頁(yè)面先加載這個(gè)JS文件(也可以在用戶編輯內(nèi)容塊的前一行加載這個(gè)腳本,這樣之前的HTML塊中我們管理員或網(wǎng)頁(yè)制作者還是可以用將要被禁用的方法),這樣之后調(diào)用被禁用的方法是不起作用的了。
注意:最后提醒一下,還要禁用部分DOM操作方法,比如remove()方法,因?yàn)橛脩艨梢杂肈OM的操作方法移除你一開始加載的那個(gè)JS文件。
一、我的想法來源
JavaScipt是好東西,它的出現(xiàn)讓網(wǎng)頁(yè)頁(yè)面表現(xiàn)形式更活潑,當(dāng)然好處絕不僅僅就這些,而近些年來紅紅火火的AJAX應(yīng)用更讓人開始重視JavaScipt小語(yǔ)言(好些程序牛人不把它看作語(yǔ)言,最多是腳本稱號(hào),甚至看不起搞腳本的人)的應(yīng)用?,F(xiàn)在好些博客官網(wǎng)開放腳本權(quán)限,允許用戶自定義腳本來豐富自己的空間,特別像一些技術(shù)類專業(yè)博客,提供了相當(dāng)寬松的開發(fā)環(huán)境。但是我們也發(fā)現(xiàn)好些博客會(huì)對(duì)某些腳本方法作限制。注意,我這里說的是部分限制,如果是全部限制那是很簡(jiǎn)單的事,直接把<script>腳本塊過濾掉就行了,但是部分限制又是如何做到的呢?
因?yàn)槲以谥暗捻?xiàng)目中沒有遇到這樣的問題,所以也沒有作過多的深入研究,一開始只是憑感覺想到用“替換”方法。很顯然這樣的方法行不通,因?yàn)榭赡軙?huì)出錯(cuò)。比如我要禁用alert方法,現(xiàn)有下面那段代碼:
復(fù)制代碼 代碼如下:
window.alert('Some message');
現(xiàn)在要讓上面那段代碼失效,只要讓alert變一下就行了,比如把它全部改成大寫ALERT,這樣又肯定會(huì)報(bào)腳本錯(cuò)誤的,但還是可以用try{}catch{}把ALERT包含起來,但這對(duì)禁用語(yǔ)包的識(shí)別又是一大難題,而且還會(huì)有這樣的錯(cuò)誤:把document.write('alert some message');中的alert也替換了。
后來我想到了方法重寫,重寫要禁用的方法,并讓它什么也不做,結(jié)果證明真的可行,但并不知道是不是一個(gè)科學(xué)的方法,我拿出來與大家共同討論一下。
二、具體實(shí)現(xiàn)
先看下面的代碼,實(shí)現(xiàn)了對(duì)“alert”,“write”兩個(gè)方法的禁用:
復(fù)制代碼 代碼如下:
window.alert=function(){}
document.write=function(){}
window.alert('Alert some message');
document.write('Write some message');
看起來真的很簡(jiǎn)單,在實(shí)際應(yīng)用的時(shí)候,把前面兩行單獨(dú)抽出來存在一個(gè)外部JS文件中,并在需要過濾JavaScript方法的頁(yè)面先加載這個(gè)JS文件(也可以在用戶編輯內(nèi)容塊的前一行加載這個(gè)腳本,這樣之前的HTML塊中我們管理員或網(wǎng)頁(yè)制作者還是可以用將要被禁用的方法),這樣之后調(diào)用被禁用的方法是不起作用的了。
注意:最后提醒一下,還要禁用部分DOM操作方法,比如remove()方法,因?yàn)橛脩艨梢杂肈OM的操作方法移除你一開始加載的那個(gè)JS文件。
相關(guān)文章
JavaScript事件概念詳解(區(qū)分靜態(tài)注冊(cè)和動(dòng)態(tài)注冊(cè))
這篇文章主要介紹了JavaScript事件(區(qū)分靜態(tài)注冊(cè)和動(dòng)態(tài)注冊(cè))的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用JavaScript,感興趣的朋友可以了解下2021-02-02javascript數(shù)字格式化通用類 accounting.js使用
accounting.js 是一個(gè)非常小的JavaScript方法庫(kù)用于對(duì)數(shù)字,金額和貨幣進(jìn)行格式化。并提供可選的Excel風(fēng)格列渲染。它沒有依賴任何JS框架。貨幣符號(hào)等可以按需求進(jìn)行定制2012-08-08利用es6 new.target來對(duì)模擬抽象類的方法
這篇文章主要介紹了利用es6 new.target來對(duì)模擬抽象類的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-05-05JavaScript Array擴(kuò)展實(shí)現(xiàn)代碼
最近看了一下developer.mozilla.org里的東西,發(fā)現(xiàn)它為Array對(duì)象添加了不少generic method,趕得上Prototype的熱心程度。2009-10-10微信小程序自定義select下拉選項(xiàng)框組件的實(shí)現(xiàn)代碼
微信小程序中沒有select下拉選項(xiàng)框,所以只有自定義。這篇文章主要介紹了微信小程序自定義select下拉選項(xiàng)框組件,需要的朋友可以參考下2018-08-08JavaScript實(shí)現(xiàn)文件的拖拽上傳功能
文件上傳,可以說是我們?cè)陧?xiàng)目中最常用的功能之一,文件上傳一般有兩種形式:點(diǎn)擊上傳和拖拽上傳,而上傳的內(nèi)容,又大體包括:文件和文件夾,本文給大家介紹了JavaScript實(shí)現(xiàn)文件的拖拽上傳功能的方法,需要的朋友可以參考下2024-02-02select每選擇一個(gè)option選項(xiàng)減少對(duì)應(yīng)的option實(shí)現(xiàn)方法
這篇文章主要為大家介紹了select每選擇一個(gè)option選項(xiàng)減少對(duì)應(yīng)的option實(shí)現(xiàn)方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12