瀏覽網(wǎng)頁時,當(dāng)從A頁面點擊跳轉(zhuǎn)到B頁面后,一般情況下,可以點擊瀏覽器上的“后退”按鈕返回A頁面。
如果進(jìn)入B頁面后,B頁面想讓訪問者留下,禁止返回,是否可以實現(xiàn)呢?
這簡直是要控制瀏覽器的行為,雖然有些邪惡,但確實可以實現(xiàn),使用特殊的JAVAScript代碼就可實現(xiàn)。
方法如下:
實現(xiàn)原理:
監(jiān)聽瀏覽器的popstate事件,該事件會在用戶點擊瀏覽器的回退按鈕時被觸發(fā)。
然后,使用History.pushState()方法向當(dāng)前瀏覽器會話的歷史堆棧中添加一個陷阱狀態(tài),該狀態(tài)會使“回退”操作無效。
JS源碼:
//瀏覽器返回鍵事件
pushHistory();
window.addEventListener("popstate", function(e) {
//判斷移動端
var userAgentInfo = navigator.userAgent;
var Agents = new Array("Android", "iphone", "SymbianOS", "windows Phone", "iPad", "iPod");
var equipmentType = false;
for (var v = 0; v < Agents.length; v++) {
if (userAgentInfo.indexOf(Agents[v]) != -1) {
equipmentType = true;
break;
if (equipmentType) {
$("#mask-back").show();
$("#mask-back .back-close").on("click", function() {
$("#mask-back").hide();
pushHistory(); //注,此處調(diào)用,可以讓用戶一直停留著這個頁面
}, false);
function pushHistory() {
var stateeee = {
title: "title",
url: "#"
window.history.pushState(stateeee, "title", "#");
![]()
測試方法:
建立兩個文件:a.html、b.html。
a文件內(nèi)容簡單寫一句代碼:
goto b.html。
b文件內(nèi)容寫入上面的源碼。
打開a頁面,點擊鏈接進(jìn)入b頁面,這時再點擊瀏覽器上的“后退”按鈕,會發(fā)現(xiàn):操作無效,無法后退。
提升強度:
這個黑暗的技巧,雖然使用了不常見的技術(shù)方法,但查看頁面源碼很容易發(fā)現(xiàn)其實現(xiàn)原理。
為了保護(hù)代碼、防止代碼被分析,可以對上面的JavaScript代碼加密,加密使用JShaman。
進(jìn)入JShaman官網(wǎng),貼入代碼:
![]()
在配置中,勾選“字符串加密”:
![]()
然后生成混淆加密的JavaScript代碼:
![]()
復(fù)制粘貼回b文件:
![]()
這時,代碼成為加密狀態(tài),雖然不影響運行,是萬萬不可能了。






