Disable 'disable right click'

Disables the ugly feature that disables right click

ของเมื่อวันที่ 06-09-2019 ดู เวอร์ชันล่าสุด

// ==UserScript==
// @name         Disable 'disable right click'
// @namespace    https://github.com/mosaicer
// @author       mosaicer
// @description  Disables the ugly feature that disables right click
// @version      1.4.3
// @include      *
// @run-at       document-idle
// ==/UserScript==
(() => {
  'use strict';

  const EVENT_NAMES = ['oncontextmenu', 'oncopy', 'onpaste', 'onmousedown', 'onselectstart'];

  const replaceFalseWithTrue =
    function replaceFalseTheFunctionReturnsWithTrue(funcText) {
      return funcText.replace(/(return[\s\(]+)false([\s\)]*;?)/, '$1true$2');
    };

  document.querySelectorAll('*').forEach(node =>
    EVENT_NAMES.forEach(name => {
      const attr = node.getAttribute(name);

      if (attr) {
        node.setAttribute(
          name,
          replaceFalseWithTrue(attr)
        );
      }
    })
  );

  [window, document].forEach(et =>
    EVENT_NAMES.forEach(name => {
      const handler = et[name];

      if (typeof handler === 'undefined' || handler === null) {
        return;
      }

      const handlerText = handler.toString();

      let output;
      if (handlerText.startsWith('function')) {
        output = replaceFalseWithTrue(handlerText)
          .replace(/^function\s*(\(.*?\))/, '$1 =>');
      } else if (/^\(?.+?\)?\s*=>\s*\{/.test(handlerText)) {
        output = replaceFalseWithTrue(handlerText);
      } else {
        output = handlerText.replace(/^(\(?.+?\)?\s*=>\s*)false/, '$1true');
      }

      et[name] = eval(output);
    })
  );
})();