Absolute Enable Right Click & Copy

Force Enable Right Click & Copy & Highlight

当前为 2017-04-21 提交的版本,查看 最新版本

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

QingJ © 2025

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