Unlimit-Web

解除网页限制: 恢复文本的选中和复制, 过滤文本小尾巴, 恢复右键菜单. Remove webpage restrictions: restore the selection and copy of text, clear the text tail, and restore the right-click menu.

目前為 2022-05-21 提交的版本,檢視 最新版本

  1. // ==UserScript==
  2. // @name Unlimit-Web
  3. // @description 解除网页限制: 恢复文本的选中和复制, 过滤文本小尾巴, 恢复右键菜单. Remove webpage restrictions: restore the selection and copy of text, clear the text tail, and restore the right-click menu.
  4. // @version 1.5
  5. // @author xcanwin
  6. // @namespace https://github.com/xcanwin/Unlimit-Web/
  7. // @supportURL https://github.com/xcanwin/Unlimit-Web/
  8. // @license AGPL-3.0-only
  9. // @icon data:image/png;base64,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
  10. // @run-at document-end
  11. // @match *://*/*
  12. // @grant none
  13. // ==/UserScript==
  14.  
  15. (function() {
  16. 'use strict';
  17.  
  18. let main = function(){
  19. Array.prototype.forEach.call(document.getElementsByTagName("*"), function(el) {
  20. [
  21. "user-select", "-webkit-user-select", "-moz-user-select", "-ms-user-select", "-khtml-user-select"
  22. ].forEach(xcanwin => {
  23. let filterstyle = document.defaultView.getComputedStyle(el, null)[xcanwin];
  24. if (filterstyle && filterstyle == 'none') {
  25. el.style[xcanwin] = "text";
  26. }
  27. });
  28.  
  29. [
  30. "pointer-events"
  31. ].forEach(xcanwin => {
  32. let filterstyle = document.defaultView.getComputedStyle(el, null)[xcanwin];
  33. if (filterstyle && filterstyle != 'auto') {
  34. el.style[xcanwin] = "auto !important";
  35. }
  36. });
  37.  
  38. [
  39. "onselect", "onselectstart", "onselectionchange",
  40. "oncontextmenu",
  41. "oncopy", "onbeforecopy",
  42. "onkeypress", "onkeyup",
  43. "onpaste", "onbeforepaste", "oncut", "onbeforecut",
  44. "onmouseenter", "onmouseleave",
  45. "onpointercancel", "onpointerdown", "onpointerenter", "onpointerleave", "onpointerlockchange", "onpointerlockerror", "onpointermove", "onpointerout", "onpointerover", "onpointerrawupdate", "onpointerup"
  46. ].forEach(xcanwin => {
  47. el[xcanwin] = function(e) {
  48. e.stopImmediatePropagation();
  49. }
  50. });
  51. });
  52. };
  53.  
  54. main();
  55. })();