Prevent contextmenu hijack

Removes all listeners to the contextmenu event

  1. // ==UserScript==
  2. // @name Prevent contextmenu hijack
  3. // @namespace http://github.com/kba
  4. // @version 0.1
  5. // @description Removes all listeners to the contextmenu event
  6. // @author kba
  7. // @match */*
  8. // @grant GM_registerMenuCommand
  9. // @grant GM_getValue
  10. // @grant GM_setValue
  11. // ==/UserScript==
  12. /* jshint -W097 */
  13. /* globals GM_getValue, GM_setValue, GM_registerMenuCommand */
  14. 'use strict';
  15.  
  16.  
  17. function removeContextMenuListeners() {
  18. document.oncontextmenu = null;
  19. var elems = document.querySelectorAll('div,img,video,figure,main,article,section,header,footer');
  20. for (var i = 0 ; i < elems.length ; i++) {
  21. elems[i].oncontextmenu = null;
  22. }
  23. }
  24.  
  25. function isPermanent() { return GM_getValue('permanent'); }
  26. function togglePermanent() { GM_setValue('permanent', ! isPermanent()); }
  27.  
  28. if (isPermanent()) {
  29. setTimeout(removeContextMenuListeners, 500);
  30. }
  31.  
  32. GM_registerMenuCommand('Allow Right-Click', removeContextMenuListeners);
  33. GM_registerMenuCommand((isPermanent() ? 'Dis' : 'En') + 'able Permanent Allow Right-Click', togglePermanent);