Greasy Fork 支持简体中文。

Page Dimmer

Dims any webpages to ease your eyes when reading at night. CTRL + ALT + 0 to de/activate

  1. // ==UserScript==
  2. // @name Page Dimmer
  3. // @description Dims any webpages to ease your eyes when reading at night. CTRL + ALT + 0 to de/activate
  4. // @version 7
  5. // @author condoriano
  6. // @namespace condoriano_pagedimmer
  7. // @include *
  8. // @grant GM_getValue
  9. // @grant GM_setValue
  10. // @grant GM_deleteValue
  11. // @grant GM_listValues
  12. // ==/UserScript==
  13.  
  14. (function() {
  15. if(window.top != window.self) return;
  16. var dim = document.createElement("div");
  17. dim.setAttribute("id", "pageDimmer");
  18. dim.style = "display: block; opacity: 0.8; background: #000; width: 100%; height: 100%; position: fixed; top: 0px; left: 0px; z-index: 10000; pointer-events: none;";
  19. document.body.appendChild(dim);
  20.  
  21. var initialZIndex = dim.style.zIndex;
  22. var maxZIndex = initialZIndex;
  23. if(document.getElementsByTagName('video').length) {
  24. var elem = document.getElementsByTagName('video')[0];
  25. while(elem = elem.parentElement) {
  26. var style = window.getComputedStyle(elem);
  27. var zidx = style.getPropertyValue('z-index');
  28. if(parseInt(zidx)) maxZIndex = parseInt(zidx);
  29. }
  30. if(maxZIndex == initialZIndex) document.getElementsByTagName('video')[0].style.zIndex = initialZIndex;
  31. }
  32.  
  33. if(GM_getValue('pageDimmer_display') !== undefined) {
  34. var disp = GM_getValue('pageDimmer_display');
  35. if(disp == '0') dim.style.display = 'none';
  36. else {
  37. dim.style.display = 'block';
  38. if(disp == '2') dim.style.zIndex = maxZIndex - 1;
  39. }
  40. }
  41. if(GM_getValue('pageDimmer_opacity')) dim.style.opacity = GM_getValue('pageDimmer_opacity');
  42.  
  43. function toggleDim() {
  44. var disp = parseInt(GM_getValue('pageDimmer_display'));
  45. if(isNaN(disp)) disp = 0;
  46. disp++
  47. if(disp % 3 == 0) dim.style.display = 'none';
  48. else {
  49. dim.style.display = 'block'
  50. if(disp % 3 == 2) dim.style.zIndex = maxZIndex - 1;
  51. else dim.style.zIndex = maxZIndex;
  52. }
  53. GM_setValue('pageDimmer_display', disp % 3);
  54. }
  55. function adjustDim(add) {
  56. if(dim.style.display == 'none') toggleDim();
  57. var opac = parseFloat(dim.style.opacity);
  58. opac = add ? opac + 0.1 : opac - 0.1;
  59. opac = Math.min(Math.max(opac, 0.0), 1.0);
  60. dim.style.opacity = opac;
  61. GM_setValue('pageDimmer_opacity', dim.style.opacity);
  62. }
  63. document.addEventListener('keydown', function(e) {
  64. var key = e.keyCode || e.which;
  65. var kZero, kMinus, kPlus;
  66. if(/Firefox/.test(navigator.userAgent)) { kZero = key == 48 || key == 96; kMinus = key == 173 || key == 109; kPlus = key == 61 || key == 107; }
  67. else { kZero = key == 48 || key == 96; kMinus = key == 189 || key == 109; kPlus = key == 187 || key == 107; }
  68. if(e.ctrlKey && e.altKey) {
  69. if(kZero) toggleDim(); // key 0
  70. else if(kMinus) adjustDim(false); // key -
  71. else if(kPlus) adjustDim(true); // key =
  72. }
  73. });
  74. })();