2016-08-17 33 views
0

我有一個問題,並且找不到任何解決方案。 我已經在我的應用程序中定義了自定義CTRL + P快捷鍵,並且我希望IE 11和MS Edge不顯示它們的打印窗口。 所以,我的代碼運行後,我寫了這個代碼:JavaScript:IE 11和MS Edge覆蓋CTRL + P

   e.keyCode = 0; 
       e.cancelBubble = true; 
       e.returnValue = false; 

       if (e.preventDefault) 
        e.preventDefault(); 

       if (e.stopPropagation) 
        e.stopPropagation(); 

       return false; 

遺憾的是它不工作。打印窗口也會顯示。在Chrome和Firefox上一切正常。另外一件事:當我在邊緣停止腳本執行(例如行e.keyCode = 0;)與斷點,然後恢復打印窗口不會顯示。

我添加自定義快捷的方法是:

if (el.addEventListener) el.addEventListener('keydown', func, false); 
else if(el.attachEvent) el.attachEvent('onkeydown', func); 
... 

FUNC變量包含我的自定義操作和代碼停止傳播(從消息的開頭)的代碼。 謝謝!

回答

2

您無法可靠地阻止「打印」對話框。

建議:

不要(嘗試)打破內置的瀏覽器功能。
這將總是導致UX降低。

此外,即使如果您設法禁用打印彈出,什麼是阻止用戶截圖?

+0

這是一個商業應用程序。用戶有機會定義他們自己的快捷方式。 – Alex

+0

爲什麼用戶會使用[Ctrl] + [P]以外的其他值來打印?此外,這仍然沒有改變不可能可靠地阻止它的事實。 – Cerbrus

+0

我不知道。有不同的用戶和不同的情況。 – Alex