在設計網頁時,有時我們不想讓 user 取得頁面上的資訊,因此就必須讓 user 在頁面上的任何點擊都無法發生作用,這行為就是所謂的鎖網頁,所謂有法就有破,雖然要破鎖網頁很容易,但對門外漢而言多少還是有阻擋的作用,所以就稍微學一下吧。
鎖網頁的第一步就是要先使用 window.open() 開啟一個無 Tool bar 與 Menu bar 的視窗,這算是基本功,此處就不多說了。接下來再使用 javascript 來鎖掉滑鼠右鍵、功能鍵(F5、退格刪除(Backspace) 鍵) 與組合鍵(Ctrl + N、Ctrl + R、Shift + F10、Shift + 滑鼠左鍵、Alt + 左方向鍵、Alt + 右方向鍵、Alt + F4) 即可。以下將開始各別說明。
- 鎖滑鼠右鍵
// 擋滑鼠右鍵選單事件
document.oncontextmenu = function() { return false;};
// 擋滑鼠中鍵與右鍵事件
document.onmousedown = function(theEvent) {
if (theEvent != null) {
event = theEvent;
}
if (event.type == "mousedown") {
if (event.button == 2 || event.button == 3) {
return false;
}
}
}
- 擋功能鍵
F1 ~ F12 功能鍵的 keyCode 為 112 ~ 123。
擋功能鍵的重點比較麻煩的是在 IE 中要做額外處理,首先要把 event 物件的 keyCode 值設為 0,否則光是 return false 是沒有作用的;另外就是 F1 鈕會觸發 window.onhelp 事件,因此要特別針對此做設定。
// 擋 IE 按下 F1 鈕時會觸發的 onhelp 事件
window.onhelp = function(){return false;}
// 擋住 F1 ~ F12 鈕的事件。
document.onkeydown = function(theEvent) {
if (theEvent != null) {
event = theEvent;
}
if (event.keyCode >= 112 && event.keyCode <= 123 || event.keyCode == 8) {
try {
// Firefox 會丟 Exception,所以用 try-cache 擋住
event.keyCode = 0;
} catch(e){}
return false;
}
}
- 擋組合鍵(瀏覽器快速鍵)
所謂組合鍵就是 Ctrl + XXX 或是 Alt + XXX 或是 Shift + XXX,重點在於只要將 Ctrl、Alt 或 Shift 擋下,那組合鍵就破功了。由於 Shift + XXX 不會是瀏覽器的快速鍵,所以不鎖 Shift。
document.onkeydown = function(theEvent ) {
if (theEvent != null) {
event = theEvent;
}
if (event.altKey || event.ctrlKey) {
return false;
}
}
鎖網頁的重點大致上如上所述,以下提供一個綜合的寫法,並可在 Firefox 與 IE 上運行無礙。
lock = function(theEvent) {
if (theEvent != null) {
event = theEvent;
}
// 擋滑鼠右鍵選單事件
if (event.type == "contextmenu") {
return false;
// 擋滑鼠中鍵與右鍵事件
} else if (event.type == "mousedown") {
if (event.button == 2 || event.button == 3) {
return false;
}
// 擋 IE 按下 F1 鈕時會觸發的 onhelp 事件
} else if (event.type == "help") {
return false;
// 擋特定按鍵
} else if (event.type == "keydown") {
// 擋 alt、ctrl 鍵
if (event.altKey || event.ctrlKey) {
return false;
}
// 擋 F1 ~ F12 功能鍵,其中此種寫法只能擋 FF 的 F1 鍵,無法擋 IE 的 F1 鍵
if (event.keyCode >= 112 && event.keyCode <= 123) {
try {
// IE 要將 keyCode 設為 0 才能真正擋下 F2 ~ F12 功能鍵,
// 但 FF 會丟 Exception,所以用 try-cache 擋住
event.keyCode = 0;
} catch(e){}
return false;
}
}
}
document.onmousedown = lock;
document.oncontextmenu = lock;
document.onkeydown = lock;
window.onhelp = lock;
參考資料:
http://topic.csdn.net/t/20030226/19/1469908.html
需封鎖的快速鍵整理:
- 滑鼠右鍵:開啟右鍵選單。
- Ctrl + N:開啟新視窗至當前 URL。
- Ctrl + R:重載網頁,等同 F5 功能鍵。
- F1:開啟 Help 視窗。
- F5:重載網頁。
- Alt + 左方向鍵:回上一頁。等同瀏覽器上的 <- 按鈕。
- Alt + 右方向鍵:到下一頁。等同瀏覽器上的 -> 按鈕。
- Alt + F4:關閉視窗(或頁籤)。
- 退格刪除鍵(Backspace):回上一頁。等同瀏覽器上的 <- 按鈕。
- Shift + F10:開啟右鍵選單。等同滑鼠右鍵。
- 在頁面上連結(<a href>) 上按下 Shift + 滑鼠左鍵:開啟新視窗至該連結的 URL。