Protect browser keyboard shortcuts

Stop websites from highjacking some keyboard shortcuts

当前为 2017-08-11 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name Protect browser keyboard shortcuts
  3. // @description Stop websites from highjacking some keyboard shortcuts
  4. // @author Alex Efros <powerman-asdf@ya.ru>
  5. // @run-at document-start
  6. // @include *
  7. // @grant none
  8. // @version 1.1
  9. // @namespace https://github.com/powerman/userjs-protect-browser-shortcuts
  10. // ==/UserScript==
  11.  
  12. (function(document){
  13. 'use strict';
  14.  
  15. var shortcuts = [
  16. {input:false, ctrl:false, alt:false, meta:false, shift:false, code:'Slash'},
  17. {input:true, ctrl:true, alt:false, meta:false, shift:false, code:'Tab'},
  18. ];
  19. var shortcuts_len = shortcuts.length;
  20.  
  21. var protectKeys = function(e) {
  22. // console.log(e)
  23. for (var i=0; i<shortcuts_len; i++) {
  24. var k = shortcuts[i];
  25. if (!k.input && (e.target.tagName === 'INPUT' || e.target.tagName === 'TEXTAREA')) {
  26. continue;
  27. }
  28. if (e.ctrlKey === k.ctrl &&
  29. e.altKey === k.alt &&
  30. e.metaKey === k.meta &&
  31. e.shiftKey === k.shift &&
  32. e.code === k.code
  33. ) {
  34. // console.log("shortcut protected")
  35. e.cancelBubble = true;
  36. e.stopPropagation();
  37. e.stopImmediatePropagation();
  38. // e.preventDefault();
  39. return false;
  40. }
  41. }
  42. };
  43.  
  44. document.addEventListener('keydown', protectKeys);
  45. document.addEventListener('keypress', protectKeys);
  46. document.addEventListener('keyup', protectKeys);
  47.  
  48. })(document);