禁用頁(yè)面部分JavaScript不是全部而是部分
本文討論的方法本人并沒(méi)有在實(shí)際項(xiàng)目中應(yīng)用過(guò),因?yàn)槲疫€沒(méi)有遇到有這樣需要的項(xiàng)目,但試驗(yàn)發(fā)現(xiàn)可行。
一、我的想法來(lái)源
JavaScipt是好東西,它的出現(xiàn)讓網(wǎng)頁(yè)頁(yè)面表現(xiàn)形式更活潑,當(dāng)然好處絕不僅僅就這些,而近些年來(lái)紅紅火火的AJAX應(yīng)用更讓人開(kāi)始重視JavaScipt小語(yǔ)言(好些程序牛人不把它看作語(yǔ)言,最多是腳本稱號(hào),甚至看不起搞腳本的人)的應(yīng)用?,F(xiàn)在好些博客官網(wǎng)開(kāi)放腳本權(quán)限,允許用戶自定義腳本來(lái)豐富自己的空間,特別像一些技術(shù)類專業(yè)博客,提供了相當(dāng)寬松的開(kāi)發(fā)環(huán)境。但是我們也發(fā)現(xiàn)好些博客會(huì)對(duì)某些腳本方法作限制。注意,我這里說(shuō)的是部分限制,如果是全部限制那是很簡(jiǎn)單的事,直接把<script>腳本塊過(guò)濾掉就行了,但是部分限制又是如何做到的呢?
因?yàn)槲以谥暗捻?xiàng)目中沒(méi)有遇到這樣的問(wèn)題,所以也沒(méi)有作過(guò)多的深入研究,一開(kāi)始只是憑感覺(jué)想到用“替換”方法。很顯然這樣的方法行不通,因?yàn)榭赡軙?huì)出錯(cuò)。比如我要禁用alert方法,現(xiàn)有下面那段代碼:
window.alert('Some message');
現(xiàn)在要讓上面那段代碼失效,只要讓alert變一下就行了,比如把它全部改成大寫ALERT,這樣又肯定會(huì)報(bào)腳本錯(cuò)誤的,但還是可以用try{}catch{}把ALERT包含起來(lái),但這對(duì)禁用語(yǔ)包的識(shí)別又是一大難題,而且還會(huì)有這樣的錯(cuò)誤:把document.write('alert some message');中的alert也替換了。
后來(lái)我想到了方法重寫,重寫要禁用的方法,并讓它什么也不做,結(jié)果證明真的可行,但并不知道是不是一個(gè)科學(xué)的方法,我拿出來(lái)與大家共同討論一下。
二、具體實(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');
看起來(lái)真的很簡(jiǎn)單,在實(shí)際應(yīng)用的時(shí)候,把前面兩行單獨(dú)抽出來(lái)存在一個(gè)外部JS文件中,并在需要過(guò)濾JavaScript方法的頁(yè)面先加載這個(gè)JS文件(也可以在用戶編輯內(nèi)容塊的前一行加載這個(gè)腳本,這樣之前的HTML塊中我們管理員或網(wǎng)頁(yè)制作者還是可以用將要被禁用的方法),這樣之后調(diào)用被禁用的方法是不起作用的了。
注意:最后提醒一下,還要禁用部分DOM操作方法,比如remove()方法,因?yàn)橛脩艨梢杂肈OM的操作方法移除你一開(kāi)始加載的那個(gè)JS文件。
- 禁用Tab鍵JS代碼兼容Firefox和IE
- javascript怎么禁用瀏覽器后退按鈕
- 禁用JavaScript控制臺(tái)調(diào)試的方法
- 利用javascript實(shí)現(xiàn)禁用網(wǎng)頁(yè)上所有文本框,下拉菜單,多行文本域
- javascript禁用Tab鍵腳本實(shí)例
- js禁止頁(yè)面復(fù)制功能禁用頁(yè)面右鍵菜單示例代碼
- 為radio類型的INPUT添加客戶端腳本(附加實(shí)現(xiàn)JS來(lái)禁用onClick事件思路代碼)
- js 禁用只讀文本框獲得焦點(diǎn)時(shí)的退格鍵
- JS input文本框禁用右鍵和復(fù)制粘貼功能的代碼
- JS禁用頁(yè)面上所有控件的實(shí)現(xiàn)方法(附demo源碼下載)
相關(guān)文章
使用pjax實(shí)現(xiàn)無(wú)刷新更改頁(yè)面url
pjax=pushState+ajax,相信用過(guò)github的同學(xué)都知道,github部分頁(yè)面采用了pjax這個(gè)項(xiàng)目來(lái)實(shí)現(xiàn)ajax無(wú)刷新加載的同時(shí)改變頁(yè)面url。一起來(lái)學(xué)習(xí)一下這個(gè)插件吧。2015-02-02
微信小程序利用swiper+css實(shí)現(xiàn)購(gòu)物車商品刪除功能
這篇文章主要介紹了微信小程序利用swiper+css實(shí)現(xiàn)購(gòu)物車商品刪除功能,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03
JS實(shí)現(xiàn)星星評(píng)分功能實(shí)例代碼(兩種方法)
這篇文章主要介紹了JS實(shí)現(xiàn)星星評(píng)分功能實(shí)例代碼(兩種方法)的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-06-06
JavaScript setTimeout()基本用法有哪些
這篇文章主要介紹了JavaScript setTimeout()基本用法有哪些,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11
uniapp小程序開(kāi)發(fā)組件封裝之自定義輪播圖效果
這篇文章主要介紹了uniapp小程序開(kāi)發(fā)組件封裝之自定義輪播圖,本文主要展示小程序端封裝輪播圖組件,使用的是uniapp進(jìn)行的開(kāi)發(fā),主要使用的是uniapp官網(wǎng)提供的swiper組件,需要的朋友可以參考下2023-02-02
Javascript?Object對(duì)象類型使用詳解
面向?qū)ο缶幊?Object?Oriented?Programming)將現(xiàn)實(shí)世界中的復(fù)雜關(guān)系抽象成一個(gè)個(gè)對(duì)象,通過(guò)對(duì)象之間的分工合作對(duì)現(xiàn)實(shí)世界進(jìn)行模擬,這篇文章主要介紹了Javascript?Object對(duì)象類型使用詳解2022-10-10
在JavaScript中調(diào)用Java類和接口的方法
這篇文章主要講述如何在JavaScript腳本語(yǔ)言中調(diào)用Java類和接口,對(duì)大家的學(xué)習(xí)和工作有一定的參考借鑒價(jià)值,有需要的朋友們下面來(lái)一起看看吧。2016-09-09

