之前有個需求是讓 User 按下確定鈕後,程式會呼叫 Flash 進行一段小動畫,執行完後會告知 User 中獎的獎項資料,因為 Flash 執行期間
User 不小心按了 F5 進行重新整理後就會看不到中獎獎項,雖然 User 事後可以使用查詢功能查詢中獎資料,但 Flash
執行到一半就中斷感覺不是很好,所以就寫了一個可以將鍵盤 F5
功能禁能的程式(包含回上頁、回下頁禁能),此程式只能擋鍵盤操作的部份,若點選瀏覽器工具列就沒辦法了。
我將程式用 jQuery 包成了2 個 Function:
disableF5Key:禁止按下鍵盤
F5、Alt+Left(回上一頁)、Alt+Right(到下一頁) 按鍵
enableF5Key :允許按下鍵盤
F5、Alt+Left(回上一頁)、Alt+Right(到下一頁) 按鍵
使用時可以依自己需求,看是要頁面載入後就直接禁能,直到頁面關閉,還是按下特定功能後禁能,執行完後再解除。
要禁能時執行 $.fn.disableF5Key()
要解除時執行 $.fn.enableF5Key()
程式碼如下:
12 |
disableF5Key: function() {
|
13 |
$(window.document).keydown(disableF5InnerFunc);
|
16 |
enableF5Key: function() {
|
17 |
$(window.document).unbind("keydown",
disableF5InnerFunc); |
21 |
function disableF5InnerFunc(event) {
|
23 |
if ($.browser.msie) {
e = window.event; } else { e = event; } |
24 |
if (e.keyCode == 116)
{ e.keyCode = 0; return false; }
|
25 |
if (e.altKey
&& (e.keyCode == 37 || e.keyCode == 39)) { return false; }
|
IE 直接套用 window.event 就可以抓到按鍵值了,而 FireFox 需使用 jQuery 傳入的事件來處理,所以 IE、FireFox
之間處理的差異就差在 IE 使用 window.event,而 FireFox 使用事件觸發時傳入的 event。
【2009-06-06更新】附上一個簡易測試範例,執行此測試總共須要
2 個檔案,第 1 個檔案是將下方的程式碼複製後存成html檔案,第 2 個檔案是將此網頁上方 disableF5Key 的 jQuery 程式碼存成
disableF5Key.js 檔案,2 個檔案放在相同的路徑下就可以執行了。
執行後畫面上會有 2 個按鈕,可在按下按鈕後,再按 F5 測試網頁的重新整理。
若對於 jQuery 語法不熟悉,可以參考保哥推薦的教學影片學習 jQuery 從入門到精通只要兩小時!。
將下方的程式碼存成html,再將此網頁上方 disableF5Key 的 jQuery 程式碼存成 disableF5Key.js。
05 |
<script src="disableF5Key.js" type="text/javascript"></script>
|
08 |
<input id="btnDisable" type="button"
value="禁能" />
|
09 |
<input id="btnEnable" type="button"
value="解除" />
|
13 |
<script type="text/javascript" language="javascript">
|
16 |
$("#btnDisable").keydown($.fn.disableF5Key);
|
17 |
$("#btnEnable").keydown($.fn.enableF5Key);
|
相關連結: