Absolute Enable Right Click & Copy

Force Enable Right Click & Copy & Highlight

当前为 2017-02-15 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name Absolute Enable Right Click & Copy
  3. // @namespace Absolute Right Click
  4. // @description Force Enable Right Click & Copy & Highlight
  5. // @shortcutKeys [Ctrl + Alt] Activate Absolute Right Click Mode To Force Remove Any Type Of Protection
  6. // @author Absolute
  7. // @version 1.3.6
  8. // @include *
  9. // @icon https://cdn3.iconfinder.com/data/icons/communication-130/63/cursor-128.png
  10. // @license BSD
  11. // @copyright Absolute, All Right Reserved (2016)
  12. // @grant GM_addStyle
  13. // @Exclude /.*.(www.google.[^]|bing.com|youtube.com|facebook.com|pixiv.net).*/
  14.  
  15. // ==/UserScript==
  16.  
  17. var Sites_List = ['163.com','www.site.com','www.site.com'];
  18.  
  19. (function GetSelection () {
  20. var Style = document.createElement('style');
  21. Style.type = 'text/css';
  22. var TextNode = '*{user-select:text!important;-webkit-user-select:text!important;}';
  23. if (Style.styleSheet) { Style.styleSheet.cssText = TextNode; }
  24. else { Style.appendChild(document.createTextNode(TextNode)); }
  25. document.getElementsByTagName('head')[0].appendChild(Style);
  26. })();
  27.  
  28. (function SetEvents () {
  29. var events = ['copy','cut','paste','select','selectstart'];
  30. for (var i = 0; i < events.length; i++)
  31. document.addEventListener(events[i],function(e){e.stopPropagation();},true);
  32. })();
  33.  
  34. (function RestoreEvents () {
  35. var n = null;
  36. var d = document;
  37. var b = document.body;
  38. var SetEvents = [d.oncontextmenu=n,d.onselectstart=n,d.ondragstart=n,d.onmousedown=n];
  39. var GetEvents = [b.oncontextmenu=n,b.onselectstart=n,b.ondragstart=n,b.onmousedown=n,b.oncut=n,b.oncopy=n,b.onpaste=n];
  40. })();
  41.  
  42. (function RightClickButton () {
  43. setTimeout(function() {
  44. document.oncontextmenu = null;
  45. },2000);
  46. window.onload = function () {
  47. document.oncontextmenu = null;
  48. function EventsCall (callback) {
  49. this.events = ['DOMAttrModified','DOMNodeInserted','DOMNodeRemoved','DOMCharacterDataModified','DOMSubtreeModified'];
  50. this.bind();
  51. }
  52. EventsCall.prototype.bind = function () {
  53. this.events.forEach(function (event) {
  54. document.addEventListener(event, this, true);
  55. }.bind(this));
  56. };
  57. EventsCall.prototype.handleEvent = function () {
  58. this.isCalled = true;
  59. };
  60. EventsCall.prototype.unbind = function () {
  61. this.events.forEach(function (event) {
  62. }.bind(this));
  63. };
  64. function EventHandler (event) {
  65. this.event = event;
  66. this.contextmenuEvent = this.createEvent(this.event.type);
  67. }
  68. EventHandler.prototype.createEvent = function (type) {
  69. var target = this.event.target;
  70. var event = target.ownerDocument.createEvent('MouseEvents');
  71. event.initMouseEvent(type, this.event.bubbles, this.event.cancelable,
  72. target.ownerDocument.defaultView, this.event.detail,
  73. this.event.screenX, this.event.screenY, this.event.clientX, this.event.clientY,
  74. this.event.ctrlKey, this.event.altKey, this.event.shiftKey, this.event.metaKey,
  75. this.event.button, this.event.relatedTarget);
  76. return event;
  77. };
  78. EventHandler.prototype.fire = function () {
  79. var target = this.event.target;
  80. var contextmenuHandler = function (event) {
  81. event.preventDefault();
  82. }.bind(this);
  83. target.dispatchEvent(this.contextmenuEvent);
  84. this.isCanceled = this.contextmenuEvent.defaultPrevented;
  85. };
  86. window.addEventListener('contextmenu', handleEvent, true);
  87. function handleEvent (event) {
  88. event.stopPropagation();
  89. event.stopImmediatePropagation();
  90. var handler = new EventHandler(event);
  91. window.removeEventListener(event.type, handleEvent, true);
  92. var EventsCallBback = new EventsCall(function () {
  93. });
  94. handler.fire();
  95. window.addEventListener(event.type, handleEvent, true);
  96. if (handler.isCanceled && (EventsCallBback.isCalled))
  97. event.preventDefault();
  98. }};})();
  99.  
  100. (function IncludesSites () {
  101. var Check = window.location.href;
  102. var Match = RegExp(Sites_List.join('|')).exec(Check);
  103. if (Match) { Absolute_Mod(); }
  104. })();
  105.  
  106. function KeyPress (e) {
  107. if (e.altKey && e.ctrlKey) {
  108. if (confirm("Activate Absolute Right Click Mode!") === true)
  109. Absolute_Mod();
  110. }}
  111. document.addEventListener("keydown", KeyPress);
  112.  
  113. function Absolute_Mod () {
  114. var events = ['contextmenu','copy','cut','paste','mouseup','mousedown','keyup','keydown','drag','dragstart','select','selectstart'];
  115. for (var i = 0; i < events.length; i++) {
  116. document.addEventListener(events[i],function(e){e.stopPropagation();},true);
  117. }}
  118.  

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址