javascript怎么禁用瀏覽器后退按鈕
更新時(shí)間:2014年03月27日 16:35:27 作者:
這篇文章主要介紹了javascript禁用瀏覽器后退按鈕的具體實(shí)現(xiàn),有需要的朋友可以參考下
1、
<script language="JavaScript">
javascript:window.history.forward(1);
</script>
利用JS產(chǎn)生一個(gè)“前進(jìn)”的動(dòng)作,以抵消后退功能,這種方法應(yīng)該是最簡潔的,并且不需要考慮用戶連點(diǎn)兩次或多次“后退”的情況,缺點(diǎn)是當(dāng)用戶端禁用了JavaScript之后即失效。
2、
<A HREF="logout.do" onclick="javascript:location.replace(this.href); event.returnValue=false; ">
Logout (Back Disabled)
</A>
用location.replace從一個(gè)頁面轉(zhuǎn)到另一個(gè)頁面。這種方法的原理是,用新頁面的URL替換當(dāng)前的歷史紀(jì)錄,這樣瀏覽歷史記錄中就只有一個(gè)頁面,后退按鈕永遠(yuǎn)不會(huì)變?yōu)榭捎?。我想這可能正是許多人所尋求的方法,但這種方法仍舊不是任何情況下的最好方法。這種方法的缺點(diǎn)在于:簡單地運(yùn)用Response.Redirect將不再有效,這是因?yàn)槊看斡脩魪囊粋€(gè)頁面轉(zhuǎn)到另一個(gè)頁面,我們都必須用客戶端代碼清除location.history。另外還要注意,這種方法清除的是最后一個(gè)訪問歷史記錄,而不是全部的訪問記錄。
3、
當(dāng)鍵盤敲下后退鍵(Backspace)后
1、禁止瀏覽器自動(dòng)后退
2、但不影響密碼、單行文本、多行文本輸入框等的回退操作
<script type="text/javascript">
//處理鍵盤事件 禁止后退鍵(Backspace)密碼或單行、多行文本框除外
function banBackSpace(e){
var ev = e || window.event;//獲取event對象
var obj = ev.target || ev.srcElement;//獲取事件源
var t = obj.type || obj.getAttribute('type');//獲取事件源類型
//獲取作為判斷條件的事件類型
var vReadOnly = obj.getAttribute('readonly');
var vEnabled = obj.getAttribute('enabled');
//處理null值情況
vReadOnly = (vReadOnly == null) ? false : vReadOnly;
vEnabled = (vEnabled == null) ? true : vEnabled;
//當(dāng)敲Backspace鍵時(shí),事件源類型為密碼或單行、多行文本的,
//并且readonly屬性為true或enabled屬性為false的,則退格鍵失效
var flag1=(ev.keyCode == 8 && (t=="password" || t=="text" || t=="textarea")
&& (vReadOnly==true || vEnabled!=true))?true:false;
//當(dāng)敲Backspace鍵時(shí),事件源類型非密碼或單行、多行文本的,則退格鍵失效
var flag2=(ev.keyCode == 8 && t != "password" && t != "text" && t != "textarea")
?true:false;
//判斷
if(flag2){
return false;
}
if(flag1){
return false;
}
}
//禁止后退鍵 作用于Firefox、Opera
document.onkeypress=banBackSpace;
//禁止后退鍵 作用于IE、Chrome
document.onkeydown=banBackSpace;
</script>
以上方法都是針對“后退”按鈕作出的反應(yīng),客戶端瀏覽器需要打開JavaScript代碼。
4、禁止緩存
<%
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Cache-Control", "no-store");
response.setDateHeader("Expires", 0);
response.setHeader("Pragma", "no-cache");
%>
這種方法使用服務(wù)器端腳本,強(qiáng)制瀏覽器重新訪問服務(wù)器下載頁面,而不從緩存讀取,結(jié)合struts jsp頁面中的<logic>標(biāo)簽實(shí)現(xiàn)重新定向。
以上各種方法都有一定的局限
5、
<script language="JavaScript">
function logout(){
window.close(true);
window.open("logout.do");
}
</script>
<button onClick="logout()">Logout</button>
這種方法比較偷懶,關(guān)掉瀏覽器再重新開,經(jīng)過我的測試在視覺上幾乎感覺不出來延時(shí),同時(shí)又保證了后退按鈕不可用(新窗口瀏覽器后退按鈕為灰色),看起來似乎是個(gè)好方法,但缺點(diǎn)也比較明顯:
首先,關(guān)閉和重開的瀏覽器窗口大小可能不同,用戶可以明顯看出這一過程,并且在一定程度上影響操作。
其次,同上,這是一個(gè)JavaScript方法。
復(fù)制代碼 代碼如下:
<script language="JavaScript">
javascript:window.history.forward(1);
</script>
利用JS產(chǎn)生一個(gè)“前進(jìn)”的動(dòng)作,以抵消后退功能,這種方法應(yīng)該是最簡潔的,并且不需要考慮用戶連點(diǎn)兩次或多次“后退”的情況,缺點(diǎn)是當(dāng)用戶端禁用了JavaScript之后即失效。
2、
復(fù)制代碼 代碼如下:
<A HREF="logout.do" onclick="javascript:location.replace(this.href); event.returnValue=false; ">
Logout (Back Disabled)
</A>
用location.replace從一個(gè)頁面轉(zhuǎn)到另一個(gè)頁面。這種方法的原理是,用新頁面的URL替換當(dāng)前的歷史紀(jì)錄,這樣瀏覽歷史記錄中就只有一個(gè)頁面,后退按鈕永遠(yuǎn)不會(huì)變?yōu)榭捎?。我想這可能正是許多人所尋求的方法,但這種方法仍舊不是任何情況下的最好方法。這種方法的缺點(diǎn)在于:簡單地運(yùn)用Response.Redirect將不再有效,這是因?yàn)槊看斡脩魪囊粋€(gè)頁面轉(zhuǎn)到另一個(gè)頁面,我們都必須用客戶端代碼清除location.history。另外還要注意,這種方法清除的是最后一個(gè)訪問歷史記錄,而不是全部的訪問記錄。
3、
當(dāng)鍵盤敲下后退鍵(Backspace)后
1、禁止瀏覽器自動(dòng)后退
2、但不影響密碼、單行文本、多行文本輸入框等的回退操作
復(fù)制代碼 代碼如下:
<script type="text/javascript">
//處理鍵盤事件 禁止后退鍵(Backspace)密碼或單行、多行文本框除外
function banBackSpace(e){
var ev = e || window.event;//獲取event對象
var obj = ev.target || ev.srcElement;//獲取事件源
var t = obj.type || obj.getAttribute('type');//獲取事件源類型
//獲取作為判斷條件的事件類型
var vReadOnly = obj.getAttribute('readonly');
var vEnabled = obj.getAttribute('enabled');
//處理null值情況
vReadOnly = (vReadOnly == null) ? false : vReadOnly;
vEnabled = (vEnabled == null) ? true : vEnabled;
//當(dāng)敲Backspace鍵時(shí),事件源類型為密碼或單行、多行文本的,
//并且readonly屬性為true或enabled屬性為false的,則退格鍵失效
var flag1=(ev.keyCode == 8 && (t=="password" || t=="text" || t=="textarea")
&& (vReadOnly==true || vEnabled!=true))?true:false;
//當(dāng)敲Backspace鍵時(shí),事件源類型非密碼或單行、多行文本的,則退格鍵失效
var flag2=(ev.keyCode == 8 && t != "password" && t != "text" && t != "textarea")
?true:false;
//判斷
if(flag2){
return false;
}
if(flag1){
return false;
}
}
//禁止后退鍵 作用于Firefox、Opera
document.onkeypress=banBackSpace;
//禁止后退鍵 作用于IE、Chrome
document.onkeydown=banBackSpace;
</script>
以上方法都是針對“后退”按鈕作出的反應(yīng),客戶端瀏覽器需要打開JavaScript代碼。
4、禁止緩存
復(fù)制代碼 代碼如下:
<%
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Cache-Control", "no-store");
response.setDateHeader("Expires", 0);
response.setHeader("Pragma", "no-cache");
%>
這種方法使用服務(wù)器端腳本,強(qiáng)制瀏覽器重新訪問服務(wù)器下載頁面,而不從緩存讀取,結(jié)合struts jsp頁面中的<logic>標(biāo)簽實(shí)現(xiàn)重新定向。
以上各種方法都有一定的局限
5、
復(fù)制代碼 代碼如下:
<script language="JavaScript">
function logout(){
window.close(true);
window.open("logout.do");
}
</script>
<button onClick="logout()">Logout</button>
這種方法比較偷懶,關(guān)掉瀏覽器再重新開,經(jīng)過我的測試在視覺上幾乎感覺不出來延時(shí),同時(shí)又保證了后退按鈕不可用(新窗口瀏覽器后退按鈕為灰色),看起來似乎是個(gè)好方法,但缺點(diǎn)也比較明顯:
首先,關(guān)閉和重開的瀏覽器窗口大小可能不同,用戶可以明顯看出這一過程,并且在一定程度上影響操作。
其次,同上,這是一個(gè)JavaScript方法。
相關(guān)文章
JavaScript?中的引用類型Date?和RegExp的詳細(xì)介紹
這篇文章主要介紹了JavaScript中的引用類型Date和RegExp的詳細(xì)介紹,引用值(或者對象)是某個(gè)特定引用類型的實(shí)例,下文相關(guān)介紹,需要的小伙伴可以參考一下2022-07-07
Js保留小數(shù)點(diǎn)的4種效果實(shí)現(xiàn)代碼分享
jvascript 計(jì)算保留小數(shù)點(diǎn)一兩位,有四種不同效果,非常適用于商城類網(wǎng)站,需要的朋友可以參考下2014-04-04
js實(shí)現(xiàn)input框文字動(dòng)態(tài)變換顯示效果
這篇文章主要介紹了js實(shí)現(xiàn)input框文字動(dòng)態(tài)變換顯示效果,涉及javascript隨機(jī)字符串與中文的動(dòng)態(tài)切換顯示效果,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-08-08

