Protect browser keyboard shortcuts

Stop websites from highjacking some keyboard shortcuts

  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.2
  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. ];
  18. var shortcuts_len = shortcuts.length;
  19.  
  20. var protectKeys = function(e) {
  21. // console.log(e)
  22. for (var i=0; i<shortcuts_len; i++) {
  23. var k = shortcuts[i];
  24. if (!k.input && (e.target.tagName === 'INPUT' || e.target.tagName === 'TEXTAREA')) {
  25. continue;
  26. }
  27. if (e.ctrlKey === k.ctrl &&
  28. e.altKey === k.alt &&
  29. e.metaKey === k.meta &&
  30. e.shiftKey === k.shift &&
  31. e.code === k.code
  32. ) {
  33. // console.log("shortcut protected")
  34. e.cancelBubble = true;
  35. e.stopPropagation();
  36. e.stopImmediatePropagation();
  37. // e.preventDefault();
  38. return false;
  39. }
  40. }
  41. };
  42.  
  43. document.addEventListener('keydown', protectKeys);
  44. document.addEventListener('keypress', protectKeys);
  45. document.addEventListener('keyup', protectKeys);
  46.  
  47. })(document);