2014-02-11 68 views
4
$(window).on("keydown", function (e) { 
    alert(e.keyCode); 
}); 

W has 87 key code。我也知道e.ctrlKeytrue如果Ctrl在那一刻被按下。是否有可能抓住CTRL + W快捷鍵並阻止選項卡關閉?

可以趕上按Ctrl +W¯¯按鍵,防止標籤關閉?

我想:

$(window).on("keydown", function (e) { 
    if (e.keyCode === 87 && e.ctrlKey) { 
     return false; 
    } 
}); 

但似乎瀏覽器快捷方式在這種情況下,優先和關閉標籤。

我正在尋找解決方案:如果它不可能通過JavaScript,也許瀏覽器插件可以做到這一點。

+0

也許'e.which'而不是'e.keyCode'? – xmarston

+0

我不認爲這是限制用戶離開你的頁面的好設計。 – hjpotter92

+1

我不能評論,對不起) [防止閉合討論] [1] [其他事項] [2] [1]:http://security.stackexchange.com/ questions/46270/site-preventing-user-from-closing-tab-closing-browser [2]:http://stackoverflow.com/questions/3950981/closing-popup-window-created-by-google-chrome -extension –

回答

0

試試這個代碼:

$(window).keypress(function(event) { 
      event.preventDefault(); 

      if (event.which == 119 && event.ctrlKey) { 
       alert("Ctrl-W pressed"); 
      }  

    return false; 
}); 
+0

這不起作用... –

+0

我認爲它工作。每當我按Ctrl + W警報按Ctrl-W按下。這裏是小提琴的例子。 http://jsfiddle.net/7shkb/ –

+5

在Chrome中不起作用......它僅適用於Firefox。 –

1

可以使用避免標籤關閉 'beforeunload' 事件

$(window).on('beforeunload', function(e) { 
    if(hasUnsaved()) { 
     return 'You have unsaved stuff. Are you sure you want to leave?'; 
    } 
}); 

參見:http://hackab.it/2013/05/page-closing-confirm/

+0

我已經知道這種方法,但我不想顯示任何警報......我只想防止使用「CTRL + W」關閉製表符。 –

0

這不是原來的提問者的響應,但任何人通過搜索找到這個問題。這篇文章旨在爲您提供所需的信息和參數,以便回到您的老闆或您的客戶,並告訴他們爲什麼無法實現此設計。 beforeunload解決方案由此問題的最佳答案提供。祝你好運,讓他們在船上!


這個項目的設計規定,一些JavaScript代碼應該防止用戶關閉網頁,而無需向用戶提供一個對話框。這有一個關鍵問題:這是惡意網站也試圖做的事情。 Web瀏覽器開發人員致力於防止惡意網站接管用戶體驗。出於這個原因,沒有好辦法做到這一點。即使我們找到解決方案,該解決方案也不會面向未來,並且會在與瀏覽器更新一致的情況下突然中斷。

網頁瀏覽器開發人員正好爲我們提供了一個防止網站關閉的解決方案。該解決方案被稱爲「beforeunload解決方案」。 beforeunload解決方案將爲用戶提供一個對話框,該對話框中的文本將具有帶有「保留」按鈕和「離開」按鈕的標準化樣板文本。我們可以在該對話框中添加一些文本,但是我們無法刪除樣板文本,我們也無法更改,移動或以其他方式操作按鈕。 beforeunload解決方案不靈活,但它是面向未來的。

使用非標準解決方案(或稱爲黑客)來規避beforeunload提供的內容將會使我們陷入惡意網站和網絡瀏覽器開發者之間的爭奪戰中,我們將無法保證我們的網站功能將始終如一地工作。惡意網站通常會在屏幕上發現新的技巧和黑客入侵廣告,所以即使我們發現有一天某些內容可能會被禁止,但下一次可能會被禁止。互聯網上充斥着無法運行的非標準解決方案,網絡瀏覽器開發人員已關閉該解決方案!

beforeunload解決方案是長期唯一可行的解​​決方案,我們需要接受最終用戶可以因任何原因使用任何標準鍵盤快捷方式關閉我們的網站,並且我們可以防止這是一個對話框,要求他們留在網站上。

0

我知道這可能與您的場景無關,但當您使用CTRL-W關閉一個標籤負載並使用CTRL-TAB移動時,我發現CTRL + SHIFT + W快捷鍵(關閉所有窗口)時非常煩人它們之間。有時您不小心按住Shift鍵,然後Chrome會退出,只是您想要執行CTRL-W。

所以對於Windows(不知道你的意思是Linux的,但是你可以用xbindkeys做同樣的事情在那裏):

  1. 安裝https://www.autohotkey.com
  2. 要禁用窗口^ + W短切塊,加此爲AutoHotkey.ahk:

(道歉:如果按照 「代碼」 的格式顯示不出來)

^+w:: 
SetTitleMatchMode RegEx 
IfWinExist, Google Chrome$ 
{ 
    WinActivate 
} 
return 

希望這對有人正在尋找一種方法來阻止Chrome,甚至可以獲得CTRL-SHIFT-W鍵組合。

+0

謝謝!嗯,我喜歡CTRL + W的快捷鍵,我用它來關閉標籤。我只想在特定頁面上禁用它。 :) –

相關問題