本站不兼容 8 以前的版本的 Interner Explorer 浏览器(或基于这些版本的 IE 的其他浏览器),并且页面样式不完全兼容 IE 8,我们建议你升级至 IE 9 或改用其他非 IE 浏览器

Mozest™

  • 正在加载用户菜单…

开放、分享、互助

转播到腾讯微博
返回列表 回复 发帖

[求助] 请高手帮着写的脚本nightingale view

本帖最后由 cwzh_115 于 2009-2-8 20:53 编辑

希望高手能帮忙把reading blinds这个脚本改造成页面的暗夜风格。

在网上看到一个Liqube Night的Stylish脚本,可以让习惯晚上浏览网页的人减轻视觉,同时也可以减少对他人的妨碍。但是还是不够完善,详细情况如下。

在Liqube Night下的暗页效果(不足之处见图片上的说明):



用reading blinds可以实现更好的效果,但是还是有不足,具体见图片及批注:



希望高手能将reading blinds的油猴脚本进行简化,只留其黑色透明遮罩的功能。

现将reading blinds的脚本代码贴上,以供参考。
  1. // ==UserScript==
  2. // @name           Reading Blinds
  3. // @namespace      http://userscripts.org/
  4. // @author         SUCCESS
  5. // @description    护眼聚焦。“盖住”网页中不必要的区域,然后打开一扇适度的“阅读之窗”。
  6. // @include        *
  7. // @version        3
  8. // ==/UserScript==
  9. var showed = false;
  10. var visible = false;
  11. var size = window.innerHeight * 0.2; // 默认阅读区高度是窗口高度的 20%
  12. var top_cover, bottom_cover;
  13. var clientY;
  14. var setShortcutKeysAction = '';
  15. var show_hide_keycode, show_hide_shift, show_hide_ctrl, show_hide_alt; // 显示/隐藏 快捷键
  16. var increase_keycode, increase_shift, increase_ctrl, increase_alt; // 扩大阅读区域 快捷键
  17. var decrease_keycode, decrease_shift, decrease_ctrl, decrease_alt; // 缩小阅读区域 快捷键
  18. var code2keyTable={'65':'A','66':'B','67':'C','68':'D','69':'E','70':'F','71':'G','72':'H','73':'I','74':'J','75':'K','76':'L','77':'M','78':'N','79':'O','80':'P','81':'Q','82':'R','83':'S','84':'T','85':'U','86':'V','87':'W','88':'X','89':'Y','90':'Z','48':'0','49':'1','50':'2','51':'3','52':'4','53':'5','54':'6','55':'7','56':'8','57':'9','96':'Numpad 0','97':'Numpad 1','98':'Numpad 2','99':'Numpad 3','100':'Numpad 4','101':'Numpad 5','102':'Numpad 6','103':'Numpad 7','104':'Numpad 8','105':'Numpad 9','106':'Numpad *','107':'Numpad +','108':'Numpad Enter','109':'Numpad -','110':'Numpad .','111':'Numpad /','112':'F1','113':'F2','114':'F3','115':'F4','116':'F5','117':'F6','118':'F7','119':'F8','120':'F9','121':'F10','122':'F11','123':'F12','8':'BackSpace','9':'Tab','12':'Clear','13':'Enter','16':'Shift','17':'Control','18':'Alt','20':'Cape Lock','27':'Esc','32':'Spacebar','33':'Page Up','34':'Page Down','35':'End','36':'Home','37':'Left Arrow','38':'Up Arrow','39':'Right Arrow','40':'Down Arrow','45':'Insert','46':'Delete','144':'Num Lock','186':';:','187':'=+','188':',<','189':'-_','190':'.>','191':'/?','192':'`~','219':'[{','220':'\|','221':']}','222':'"'};
  19. // 注册 【设置 显示/隐藏 快捷键】 菜单
  20. GM_registerMenuCommand('Reading Blinds - 设置 显示/隐藏 快捷键', function(        {
  21. if(visible         hide(        ;
  22.     setShortcutKeysAction = 'show_hide';
  23.     showShortcutKeySettings(        ;
  24. }        ;
  25. // 注册 【设置 扩大阅读区域 快捷键】 菜单
  26. GM_registerMenuCommand('Reading Blinds - 设置 扩大阅读区域 快捷键', function(        {
  27. if(visible         hide(        ;
  28.     setShortcutKeysAction = 'increase';
  29.     showShortcutKeySettings(        ;
  30. }        ;
  31. // 注册 【设置 缩小阅读区域 快捷键】 菜单
  32. GM_registerMenuCommand('Reading Blinds - 设置 缩小阅读区域 快捷键', function(        {
  33. if(visible         hide(        ;
  34.     setShortcutKeysAction = 'decrease';
  35.     showShortcutKeySettings(        ;
  36. }        ;
  37. // 初始化。读取各快捷键。
  38. function init(        {
  39.     var keycodes, array;

  40. // 读取 显示/隐藏 快捷键
  41.     keycodes = GM_getValue('show_hide', 'alt+116'        ;
  42.     array = keycodes.split('+'        ;
  43.     show_hide_keycode = array[array.length - 1];
  44.     show_hide_shift = keycodes.indexOf('shift'         > -1;
  45.     show_hide_ctrl = keycodes.indexOf('ctrl'         > -1;
  46.     show_hide_alt = keycodes.indexOf('alt'         > -1;

  47. // 读取 扩大阅读区域 快捷键
  48.     keycodes = GM_getValue('increase', '107'        ;
  49.     array = keycodes.split('+'        ;
  50.     increase_keycode = array[array.length - 1];
  51.     increase_shift = keycodes.indexOf('shift'         > -1;
  52.     increase_ctrl = keycodes.indexOf('ctrl'         > -1;
  53.     increase_alt = keycodes.indexOf('alt'         > -1;

  54. // 读取 缩小阅读区域 快捷键
  55.     keycodes = GM_getValue('decrease', '109'        ;
  56.     array = keycodes.split('+'        ;
  57.     decrease_keycode = array[array.length - 1];
  58.     decrease_shift = keycodes.indexOf('shift'         > -1;
  59.     decrease_ctrl = keycodes.indexOf('ctrl'         > -1;
  60.     decrease_alt = keycodes.indexOf('alt'         > -1;
  61. }
  62. // 显示设置快捷键的界面
  63. function showShortcutKeySettings(        {
  64. var cover = document.getElementById('setShortcutKey'        ;
  65. var message = document.getElementById('message'        ;
  66. if (!cover         {
  67.   var cover = document.createElement('div'        ;
  68.   cover.setAttribute('id', 'setShortcutKey'        ;
  69.   cover.setAttribute('style', 'display: table; background: black; color: white; text-align: center; position: fixed; top:0; left:0; width:100%; height: 100%; opacity: .9; z-index:100;'        ;
  70.   var message = document.createElement('div'        ;
  71.   message.setAttribute('id', 'message'        ;
  72.   message.setAttribute('style', 'font-size: 200%; line-height: 1.5em; text-align: center; display: table-cell; vertical-align: middle; padding: 1em;'        ;
  73. }
  74. switch (setShortcutKeysAction         {
  75.   case 'show_hide':
  76.    message.innerHTML = '功能:显示/隐藏<br />当前快捷键:<font color="red">' + parse2keys(GM_getValue('show_hide','alt+116'                 + '</font><br />按 ESC 键保存当前设置并退出';
  77.    break;
  78.   case 'increase':
  79.    message.innerHTML = '功能:扩大阅读区域<br />当前快捷键:<font color="red">' + parse2keys(GM_getValue('increase','107'                 + '</font><br />按 ESC 键保存当前设置并退出';
  80.    break;
  81.   case 'decrease':
  82.    message.innerHTML = '功能:缩小阅读区域<br />当前快捷键:<font color="red">' + parse2keys(GM_getValue('decrease','109'                 + '</font><br />按 ESC 键保存当前设置并退出';
  83.    break;
  84. }
  85.     cover.appendChild(message        ;
  86.     document.body.appendChild(cover        ;
  87. }
  88. // 关闭设置快捷键的界面
  89. function hideShortcutKeySettings(        {
  90.     var cover = document.getElementById('setShortcutKey'        ;
  91.     cover.parentNode.removeChild(cover        ;
  92.     setShortcutKeysAction = '';
  93. }
  94. // 将 keycode 转换成按键名称
  95. function parse2keys(keycodes        {
  96. var array = keycodes.split('+'        ;
  97. array[array.length-1]=code2keyTable[array[array.length-1]] || '';
  98. return array.join('+'        ;
  99. }
  100. // 打开 护眼聚焦
  101. function show(        {
  102.     if (!showed         {
  103.         top_cover = document.createElement('div'        ;
  104.         top_cover.setAttribute('style', 'background: black; width: 100%; position: fixed; left: 0; top: 0; opacity: .85; overflow: hidden; z-index: 100;'        ;
  105.         bottom_cover = document.createElement('div'        ;
  106.         bottom_cover.setAttribute('style', 'background: black; width: 100%; position: fixed; left: 0; bottom: 0; opacity: .85; overflow: hidden; z-index: 100;'        ;
  107.         var message = document.createElement('div'        ;
  108.         message.setAttribute('id', 'msgtip'        ;
  109.         message.setAttribute('style', 'text-align: right; padding: 1em; color: white;'        ;
  110.         message.innerHTML = '移动鼠标选择阅读区域。 “' + parse2keys(GM_getValue('increase', '107'                 + '/' + parse2keys(GM_getValue('decrease', '109'                 + '” 扩大/缩小阅读区域。 “' + parse2keys(GM_getValue('show_hide', 'alt+116'                 + '” 显示/隐藏。';
  111.         top_cover.appendChild(message        ;
  112.         document.body.appendChild(top_cover        ;
  113.         document.body.appendChild(bottom_cover        ;
  114.         
  115.         // 将阅读区移动到当前鼠标位置
  116.         render(clientY        ;
  117.         
  118.         showed = true;
  119.     }
  120.     else {
  121.         var message = document.getElementById('msgtip'        ;
  122.         message.innerHTML = '移动鼠标选择阅读区域。 “' + parse2keys(GM_getValue('increase', '107'                 + '/' + parse2keys(GM_getValue('decrease', '109'                 + '” 扩大/缩小阅读区域。 “' + parse2keys(GM_getValue('show_hide', 'alt+116'                 + '” 显示/隐藏。';
  123.         top_cover.style.display = '';
  124.         bottom_cover.style.display = '';
  125.         
  126.         // 将阅读区移动到当前鼠标位置
  127.         render(clientY        ;
  128.     }

  129.     // 移动鼠标选择阅读区域
  130.     document.body.addEventListener('mousemove', function(event        {
  131.         clientY = event.clientY;
  132.         if (visible         
  133.             render(clientY        ;
  134.     }, false        ;
  135.    
  136.     visible = true;
  137. }
  138. // 关闭 护眼聚焦
  139. function hide(        {
  140.     top_cover.style.display = 'none';
  141.     bottom_cover.style.display = 'none';
  142.     visible = false;
  143. }
  144. // 绘制阅读区域
  145. function render(clientY        {
  146.     top_cover.style.height = clientY - size / 2 + 'px';
  147.     bottom_cover.style.height = window.innerHeight - clientY - size / 2 + 'px';
  148. }
  149. // 设置快捷键
  150. window.addEventListener('keydown', function(event        {
  151.     switch (setShortcutKeysAction         {
  152.   // 显示/隐藏
  153.         case 'show_hide':
  154.             // ESC 退出
  155.             if (event.keyCode == 27         {
  156.     hideShortcutKeySettings(        ;
  157.                 break;
  158.             }
  159.             show_hide_keycode = event.keyCode;
  160.    show_hide_shift = event.shiftKey;
  161.    show_hide_ctrl = event.ctrlKey;
  162.    show_hide_alt = event.altKey;
  163.    
  164.             var Keys = '';
  165.             if (show_hide_shift         {
  166.                 Keys += 'shift+';
  167.             }
  168.             if (show_hide_ctrl         {
  169.                 Keys += 'ctrl+';
  170.             }
  171.             if (show_hide_alt         {
  172.                 Keys += 'alt+';
  173.             }
  174.             
  175.    var message = document.getElementById('message'        ;
  176.    message.innerHTML = '功能:显示/隐藏<br />当前快捷键:<font color="red">' + Keys + (code2keyTable[show_hide_keycode] || ''         + '</font><br />按 ESC 键保存当前设置并退出';
  177.    Keys += String(event.keyCode        ;
  178.             GM_setValue('show_hide', Keys        ;
  179.             break;
  180.   // 扩大阅读区域
  181.         case 'increase':
  182.             // ESC 退出
  183.             if (event.keyCode == 27         {
  184.     hideShortcutKeySettings(        ;
  185.                 break;
  186.             }
  187.             increase_keycode = event.keyCode;
  188.    increase_shift = event.shiftKey;
  189.    increase_ctrl = event.ctrlKey;
  190.    increase_alt = event.altKey;
  191.    
  192.             var Keys = '';
  193.             if (increase_shift         {
  194.                 Keys += 'shift+';
  195.             }
  196.             if (increase_ctrl         {
  197.                 Keys += 'ctrl+';
  198.             }
  199.             if (increase_alt         {
  200.                 Keys += 'alt+';
  201.             }
  202.             
  203.    var message = document.getElementById('message'        ;
  204.    message.innerHTML = '功能:扩大阅读区域<br />当前快捷键:<font color="red">' + Keys + (code2keyTable[increase_keycode] || ''         + '</font><br />按 ESC 键保存当前设置并退出';
  205.    Keys += String(event.keyCode        ;
  206.             GM_setValue('increase', Keys        ;
  207.             break;
  208.   // 缩小阅读区域
  209.         case 'decrease':
  210.             // ESC 退出
  211.             if (event.keyCode == 27         {
  212.     hideShortcutKeySettings(        ;
  213.                 break;
  214.             }
  215.             decrease_keycode = event.keyCode;
  216.    decrease_shift = event.shiftKey;
  217.    decrease_ctrl = event.ctrlKey;
  218.    decrease_alt = event.altKey;
  219.    
  220.             var Keys = '';
  221.             if (decrease_shift         {
  222.                 Keys += 'shift+';
  223.             }
  224.             if (decrease_ctrl         {
  225.                 Keys += 'ctrl+';
  226.             }
  227.             if (decrease_alt         {
  228.                 Keys += 'alt+';
  229.             }
  230.             
  231.    var message = document.getElementById('message'        ;
  232.    message.innerHTML = '功能:缩小阅读区域<br />当前快捷键:<font color="red">' + Keys + (code2keyTable[decrease_keycode] || ''         + '</font><br />按 ESC 键保存当前设置并退出';
  233.    Keys += String(event.keyCode        ;
  234.             GM_setValue('decrease', Keys        ;
  235.             break;
  236.     }
  237. }, true        ;
  238. window.addEventListener('keyup', function(event        {
  239.     if (setShortcutKeysAction != ''         return;
  240.     // 显示/隐藏
  241.     if ((event.altKey == show_hide_alt         && (event.ctrlKey == show_hide_ctrl         && (event.shiftKey == show_hide_shift         && (event.keyCode == show_hide_keycode                {
  242.         if (!visible         {
  243.             show(        ;
  244.         }
  245.         else {
  246.             hide(        ;
  247.         }
  248. }
  249.    
  250.     // 调整阅读区域大小
  251.     // 放大阅读区域
  252.     else
  253.         if (visible && (event.altKey == increase_alt         && (event.ctrlKey == increase_ctrl         && (event.shiftKey == increase_shift         && (event.keyCode == increase_keycode                 {
  254.             if (size < window.innerHeight / 2         {
  255.                 size += 5;
  256.     render(clientY        ;
  257.             }
  258.         }
  259.         // 缩小阅读区域
  260.         else
  261.             if (visible && (event.altKey == decrease_alt         && (event.ctrlKey == decrease_ctrl         && (event.shiftKey == decrease_shift         && (event.keyCode == decrease_keycode                 {
  262.                 if (size > 10         {
  263.                     size -= 5;
  264.     render(clientY        ;
  265.                 }
  266.             }
  267. }, true        ;
  268. init(        ;
复制代码
附件: 您所在的用户组无法下载或查看附件
试一下这个行不行
  1. // ==UserScript==
  2. // @name           Reading Blinds
  3. // @namespace      http://userscripts.org/
  4. // @author         SUCCESS
  5. // @description    护眼聚焦。“盖住”网页中不必要的区域,然后打开一扇适度的“阅读之窗”。
  6. // @include        *
  7. // @version        3
  8. // ==/UserScript==
  9. var showed = false;
  10. var visible = false;
  11. var size = window.innerHeight * 0.2; // 默认阅读区高度是窗口高度的 20%
  12. var top_cover, bottom_cover;
  13. var clientY;
  14. var setShortcutKeysAction = '';
  15. var show_hide_keycode, show_hide_shift, show_hide_ctrl, show_hide_alt; // 显示/隐藏 快捷键
  16. var increase_keycode, increase_shift, increase_ctrl, increase_alt; // 扩大阅读区域 快捷键
  17. var decrease_keycode, decrease_shift, decrease_ctrl, decrease_alt; // 缩小阅读区域 快捷键
  18. var code2keyTable={'65':'A','66':'B','67':'C','68':'D','69':'E','70':'F','71':'G','72':'H','73':'I','74':'J','75':'K','76':'L','77':'M','78':'N','79':'O','80':'P','81':'Q','82':'R','83':'S','84':'T','85':'U','86':'V','87':'W','88':'X','89':'Y','90':'Z','48':'0','49':'1','50':'2','51':'3','52':'4','53':'5','54':'6','55':'7','56':'8','57':'9','96':'Numpad 0','97':'Numpad 1','98':'Numpad 2','99':'Numpad 3','100':'Numpad 4','101':'Numpad 5','102':'Numpad 6','103':'Numpad 7','104':'Numpad 8','105':'Numpad 9','106':'Numpad *','107':'Numpad +','108':'Numpad Enter','109':'Numpad -','110':'Numpad .','111':'Numpad /','112':'F1','113':'F2','114':'F3','115':'F4','116':'F5','117':'F6','118':'F7','119':'F8','120':'F9','121':'F10','122':'F11','123':'F12','8':'BackSpace','9':'Tab','12':'Clear','13':'Enter','16':'Shift','17':'Control','18':'Alt','20':'Cape Lock','27':'Esc','32':'Spacebar','33':'Page Up','34':'Page Down','35':'End','36':'Home','37':'Left Arrow','38':'Up Arrow','39':'Right Arrow','40':'Down Arrow','45':'Insert','46':'Delete','144':'Num Lock','186':';:','187':'=+','188':',<','189':'-_','190':'.>','191':'/ ','192':'`~','219':'[{','220':'\|','221':']}','222':'"'};
  19. // 注册 【设置 显示/隐藏 快捷键】 菜单
  20. GM_registerMenuCommand('Reading Blinds - 设置 显示/隐藏 快捷键', function(){
  21. if(visible) hide();
  22.     setShortcutKeysAction = 'show_hide';
  23.     showShortcutKeySettings();
  24. });
  25. // 注册 【设置 扩大阅读区域 快捷键】 菜单
  26. GM_registerMenuCommand('Reading Blinds - 设置 扩大阅读区域 快捷键', function(){
  27. if(visible) hide();
  28.     setShortcutKeysAction = 'increase';
  29.     showShortcutKeySettings();
  30. });
  31. // 注册 【设置 缩小阅读区域 快捷键】 菜单
  32. GM_registerMenuCommand('Reading Blinds - 设置 缩小阅读区域 快捷键', function(){
  33. if(visible) hide();
  34.     setShortcutKeysAction = 'decrease';
  35.     showShortcutKeySettings();
  36. });
  37. // 初始化。读取各快捷键。
  38. function init(){
  39.     var keycodes, array;

  40. // 读取 显示/隐藏 快捷键
  41.     keycodes = GM_getValue('show_hide', 'alt+116');
  42.     array = keycodes.split('+');
  43.     show_hide_keycode = array[array.length - 1];
  44.     show_hide_shift = keycodes.indexOf('shift') > -1;
  45.     show_hide_ctrl = keycodes.indexOf('ctrl') > -1;
  46.     show_hide_alt = keycodes.indexOf('alt') > -1;

  47. // 读取 扩大阅读区域 快捷键
  48.     keycodes = GM_getValue('increase', '107');
  49.     array = keycodes.split('+');
  50.     increase_keycode = array[array.length - 1];
  51.     increase_shift = keycodes.indexOf('shift') > -1;
  52.     increase_ctrl = keycodes.indexOf('ctrl') > -1;
  53.     increase_alt = keycodes.indexOf('alt') > -1;

  54. // 读取 缩小阅读区域 快捷键
  55.     keycodes = GM_getValue('decrease', '109');
  56.     array = keycodes.split('+');
  57.     decrease_keycode = array[array.length - 1];
  58.     decrease_shift = keycodes.indexOf('shift') > -1;
  59.     decrease_ctrl = keycodes.indexOf('ctrl') > -1;
  60.     decrease_alt = keycodes.indexOf('alt') > -1;
  61. }
  62. // 显示设置快捷键的界面
  63. function showShortcutKeySettings(){
  64. var cover = document.getElementById('setShortcutKey');
  65. var message = document.getElementById('message');
  66. if (!cover) {
  67.   var cover = document.createElement('div');
  68.   cover.setAttribute('id', 'setShortcutKey');
  69.   cover.setAttribute('style', 'display: table; background: black; color: white; text-align: center; position: fixed; top:0; left:0; width:100%; height: 100%; opacity: .9; z-index:100;');
  70.   var message = document.createElement('div');
  71.   message.setAttribute('id', 'message');
  72.   message.setAttribute('style', 'font-size: 200%; line-height: 1.5em; text-align: center; display: table-cell; vertical-align: middle; padding: 1em;');
  73. }
  74. switch (setShortcutKeysAction) {
  75.   case 'show_hide':
  76.    message.innerHTML = '功能:显示/隐藏
  77. 当前快捷键:' + parse2keys(GM_getValue('show_hide','alt+116')) + '
  78. 按 ESC 键保存当前设置并退出';
  79.    break;
  80.   case 'increase':
  81.    message.innerHTML = '功能:扩大阅读区域
  82. 当前快捷键:' + parse2keys(GM_getValue('increase','107')) + '
  83. 按 ESC 键保存当前设置并退出';
  84.    break;
  85.   case 'decrease':
  86.    message.innerHTML = '功能:缩小阅读区域
  87. 当前快捷键:' + parse2keys(GM_getValue('decrease','109')) + '
  88. 按 ESC 键保存当前设置并退出';
  89.    break;
  90. }
  91.     cover.appendChild(message);
  92.     document.body.appendChild(cover);
  93. }
  94. // 关闭设置快捷键的界面
  95. function hideShortcutKeySettings(){
  96.     var cover = document.getElementById('setShortcutKey');
  97.     cover.parentNode.removeChild(cover);
  98.     setShortcutKeysAction = '';
  99. }
  100. // 将 keycode 转换成按键名称
  101. function parse2keys(keycodes){
  102. var array = keycodes.split('+');
  103. array[array.length-1]=code2keyTable[array[array.length-1]] || '';
  104. return array.join('+');
  105. }
  106. // 打开 护眼聚焦
  107. function show(){
  108.     if (!showed) {
  109.         top_cover = document.createElement('div');
  110.         top_cover.setAttribute('style', 'background: black; width: 100%; position: fixed; left: 0; top: 0; opacity: .85; overflow: hidden; z-index: 100;');
  111.         bottom_cover = document.createElement('div');
  112.         bottom_cover.setAttribute('style', 'background: black; width: 100%; position: fixed; left: 0; bottom: 0; opacity: .85; overflow: hidden; z-index: 100;');
  113.         var message = document.createElement('div');
  114.         message.setAttribute('id', 'msgtip');
  115.         message.setAttribute('style', 'text-align: right; padding: 1em; color: white;');
  116.         message.innerHTML = '移动鼠标选择阅读区域。 “' + parse2keys(GM_getValue('increase', '107')) + '/' + parse2keys(GM_getValue('decrease', '109')) + '” 扩大/缩小阅读区域。 “' + parse2keys(GM_getValue('show_hide', 'alt+116')) + '” 显示/隐藏。';
  117.         top_cover.appendChild(message);
  118.         document.body.appendChild(top_cover);
  119.         document.body.appendChild(bottom_cover);
  120.                
  121.                 // 将所有的图片放在前面
  122.                 var imgs = document.getElementsByTagName("img");
  123.                 for(int i = 0; i < imgs.length; i++){
  124.                         imgs[i].style.zIndex = 101;
  125.                 }
  126.         
  127.         // 将阅读区移动到当前鼠标位置
  128.         render(clientY);
  129.         
  130.         showed = true;
  131.     }
  132.     else {
  133.         var message = document.getElementById('msgtip');
  134.         message.innerHTML = '移动鼠标选择阅读区域。 “' + parse2keys(GM_getValue('increase', '107')) + '/' + parse2keys(GM_getValue('decrease', '109')) + '” 扩大/缩小阅读区域。 “' + parse2keys(GM_getValue('show_hide', 'alt+116')) + '” 显示/隐藏。';
  135.         top_cover.style.display = '';
  136.         bottom_cover.style.display = '';
  137.         
  138.         // 将阅读区移动到当前鼠标位置
  139.         render(clientY);
  140.     }

  141.     // 移动鼠标选择阅读区域
  142.     document.body.addEventListener('mousemove', function(event){
  143.         clientY = event.clientY;
  144.         if (visible)
  145.             render(clientY);
  146.     }, false);
  147.    
  148.     visible = true;
  149. }
  150. // 关闭 护眼聚焦
  151. function hide(){
  152.     top_cover.style.display = 'none';
  153.     bottom_cover.style.display = 'none';
  154.     visible = false;
  155. }
  156. // 绘制阅读区域
  157. function render(clientY){
  158.     top_cover.style.height = clientY - size / 2 + 'px';
  159.     bottom_cover.style.height = window.innerHeight - clientY - size / 2 + 'px';
  160. }
  161. // 设置快捷键
  162. window.addEventListener('keydown', function(event){
  163.     switch (setShortcutKeysAction) {
  164.   // 显示/隐藏
  165.         case 'show_hide':
  166.             // ESC 退出
  167.             if (event.keyCode == 27) {
  168.     hideShortcutKeySettings();
  169.                 break;
  170.             }
  171.             show_hide_keycode = event.keyCode;
  172.    show_hide_shift = event.shiftKey;
  173.    show_hide_ctrl = event.ctrlKey;
  174.    show_hide_alt = event.altKey;
  175.    
  176.             var Keys = '';
  177.             if (show_hide_shift) {
  178.                 Keys += 'shift+';
  179.             }
  180.             if (show_hide_ctrl) {
  181.                 Keys += 'ctrl+';
  182.             }
  183.             if (show_hide_alt) {
  184.                 Keys += 'alt+';
  185.             }
  186.             
  187.    var message = document.getElementById('message');
  188.    message.innerHTML = '功能:显示/隐藏
  189. 当前快捷键:' + Keys + (code2keyTable[show_hide_keycode] || '') + '
  190. 按 ESC 键保存当前设置并退出';
  191.    Keys += String(event.keyCode);
  192.             GM_setValue('show_hide', Keys);
  193.             break;
  194.   // 扩大阅读区域
  195.         case 'increase':
  196.             // ESC 退出
  197.             if (event.keyCode == 27) {
  198.     hideShortcutKeySettings();
  199.                 break;
  200.             }
  201.             increase_keycode = event.keyCode;
  202.    increase_shift = event.shiftKey;
  203.    increase_ctrl = event.ctrlKey;
  204.    increase_alt = event.altKey;
  205.    
  206.             var Keys = '';
  207.             if (increase_shift) {
  208.                 Keys += 'shift+';
  209.             }
  210.             if (increase_ctrl) {
  211.                 Keys += 'ctrl+';
  212.             }
  213.             if (increase_alt) {
  214.                 Keys += 'alt+';
  215.             }
  216.             
  217.    var message = document.getElementById('message');
  218.    message.innerHTML = '功能:扩大阅读区域
  219. 当前快捷键:' + Keys + (code2keyTable[increase_keycode] || '') + '
  220. 按 ESC 键保存当前设置并退出';
  221.    Keys += String(event.keyCode);
  222.             GM_setValue('increase', Keys);
  223.             break;
  224.   // 缩小阅读区域
  225.         case 'decrease':
  226.             // ESC 退出
  227.             if (event.keyCode == 27) {
  228.     hideShortcutKeySettings();
  229.                 break;
  230.             }
  231.             decrease_keycode = event.keyCode;
  232.    decrease_shift = event.shiftKey;
  233.    decrease_ctrl = event.ctrlKey;
  234.    decrease_alt = event.altKey;
  235.    
  236.             var Keys = '';
  237.             if (decrease_shift) {
  238.                 Keys += 'shift+';
  239.             }
  240.             if (decrease_ctrl) {
  241.                 Keys += 'ctrl+';
  242.             }
  243.             if (decrease_alt) {
  244.                 Keys += 'alt+';
  245.             }
  246.             
  247.    var message = document.getElementById('message');
  248.    message.innerHTML = '功能:缩小阅读区域
  249. 当前快捷键:' + Keys + (code2keyTable[decrease_keycode] || '') + '
  250. 按 ESC 键保存当前设置并退出';
  251.    Keys += String(event.keyCode);
  252.             GM_setValue('decrease', Keys);
  253.             break;
  254.     }
  255. }, true);
  256. window.addEventListener('keyup', function(event){
  257.     if (setShortcutKeysAction != '') return;
  258.     // 显示/隐藏
  259.     if ((event.altKey == show_hide_alt) && (event.ctrlKey == show_hide_ctrl) && (event.shiftKey == show_hide_shift) && (event.keyCode == show_hide_keycode)){
  260.         if (!visible) {
  261.             show();
  262.         }
  263.         else {
  264.             hide();
  265.         }
  266. }
  267.    
  268.     // 调整阅读区域大小
  269.     // 放大阅读区域
  270.     else
  271.         if (visible && (event.altKey == increase_alt) && (event.ctrlKey == increase_ctrl) && (event.shiftKey == increase_shift) && (event.keyCode == increase_keycode)) {
  272.             if (size < window.innerHeight / 2) {
  273.                 size += 5;
  274.     render(clientY);
  275.             }
  276.         }
  277.         // 缩小阅读区域
  278.         else
  279.             if (visible && (event.altKey == decrease_alt) && (event.ctrlKey == decrease_ctrl) && (event.shiftKey == decrease_shift) && (event.keyCode == decrease_keycode)) {
  280.                 if (size > 10) {
  281.                     size -= 5;
  282.     render(clientY);
  283.                 }
  284.             }
  285. }, true);
  286. init();
复制代码
Welcome Humans!
We have come to visit you in peace and with goodwill!
    * Robots may not injure a human being or, through inaction, allow a human being to come to harm.
    * Robots have seen things you people wouldn't believe.
    * Robots are Your Plastic Pal Who's Fun To Be With.
    * Robots have shiny metal posteriors which should not be bitten.

And they have a plan.

凯杰:试一下这个行不行
凯杰的脚本没进行简化,只要遮罩就好了,其它那些用来调整reading blinds功能的代码可以都精简掉~回Mozillazg,这个链接,我回了很多贴,当然知道,但是经过那么多次的讨论,都没有高手给出精简有效的解答,故另开一贴~
本帖最后由 凯杰 于 2009-1-21 15:29 编辑

改好了, 快捷键是"ALT + F5 "
  1. // ==UserScript==
  2. // @name           blackCover
  3. // @namespace      com.mozest.keijack
  4. // @include        *
  5. // ==/UserScript==

  6. // 变量的定义
  7. var topCover = null; // 顶层遮盖
  8. var bottomCover = null; // 底层遮盖
  9. var created = false; // 是否已经建立遮盖
  10. var show = false; // 是否已经显示遮盖

  11. // 遮盖显示方法
  12. function showCover(){
  13.         if(!created){
  14.                 topCover = document.createElement('div');
  15.                 topCover.setAttribute('style', 'background: black; width: 100%; height: 100% position: fixed; left: 0; top: 0; opacity: .50; overflow: hidden; z-index: 100;');
  16.                 bottomCover = document.createElement('div');
  17.                 bottomCover.setAttribute('style', 'background: black; width: 100%; height: 100%; position: fixed; left: 0; bottom: 0; opacity: .50; overflow: hidden; z-index: 100;');
  18.                 document.body.appendChild(topCover);
  19.                 document.body.appendChild(bottomCover);
  20.                 // 图片处理
  21.                 var imgs = document.getElementsByTagName("img");
  22.                 for(var i = 0 ; i < imgs.length; i++){
  23.                         imgs.style.position = "relative";
  24.                         imgs.style.zIndex = "101";
  25.                 }
  26.                 created = true;
  27.         } else {
  28.                 topCover.style.display = "";
  29.                 bottomCover.style.display = "";
  30.         }
  31.         show = true;
  32. }

  33. // 遮盖的隐藏
  34. function hideCover(){
  35.         if(!created){
  36.                 return;
  37.         }
  38.         topCover.style.display = "none";
  39.         bottomCover.style.display = "none";
  40.         show = false;
  41. }

  42. window.addEventListener('keydown', function(e){
  43.         if(e.altKey  && e.keyCode == 116){
  44.                 if(!show)
  45.                         showCover();
  46.                 else
  47.                         hideCover();
  48.         }
  49. }, true);
复制代码
Welcome Humans!
We have come to visit you in peace and with goodwill!
    * Robots may not injure a human being or, through inaction, allow a human being to come to harm.
    * Robots have seen things you people wouldn't believe.
    * Robots are Your Plastic Pal Who's Fun To Be With.
    * Robots have shiny metal posteriors which should not be bitten.

And they have a plan.

本帖最后由 cwzh_115 于 2009-1-21 13:38 编辑

回LS,改成脚本安装后,快捷键不起作用,请指教
不起作用?囧, 是3个键, alt+ctrl+s/alt+ctrl+h哦, 原来是什么快捷键...如果你需要原来的快捷键我改回去...-_-
Welcome Humans!
We have come to visit you in peace and with goodwill!
    * Robots may not injure a human being or, through inaction, allow a human being to come to harm.
    * Robots have seen things you people wouldn't believe.
    * Robots are Your Plastic Pal Who's Fun To Be With.
    * Robots have shiny metal posteriors which should not be bitten.

And they have a plan.

原来是ALT+F5
本帖最后由 凯杰 于 2009-1-21 15:39 编辑

改好了, 在原来的代码中改的. 看看效果, 把颜色设得稍微亮一些. 没原来暗.

n' 如果想把图片也放在遮盖下面的话, 把 23 ~ 27 行删除就行了.
Welcome Humans!
We have come to visit you in peace and with goodwill!
    * Robots may not injure a human being or, through inaction, allow a human being to come to harm.
    * Robots have seen things you people wouldn't believe.
    * Robots are Your Plastic Pal Who's Fun To Be With.
    * Robots have shiny metal posteriors which should not be bitten.

And they have a plan.

改好了, 在原来的代码中改的. 看看效果, 把颜色设得稍微亮一些. 没原来暗.

n' 如果想把图片也放在遮盖下面的话, 把 23 ~ 27 行删除就行了.
凯杰 发表于 2009-1-21 15:28
凯杰亲自试过没有?我试了,还是不行,我禁用了reading blinds的脚本,安装了这个新修改的脚本后,按alt+F5后,出来的效果还是reading blinds的效果,中间的空白还是没有去掉
凯杰的脚本试验成功,发张图庆贺一下

附件: 您所在的用户组无法下载或查看附件
凯杰,似乎应该把所有的文字链接部分也设为例外,不被遮罩,不然没法畅快浏览
猴子脚本要等到网页载入完成后才生效。所以这脚本用处不大,晚上还是晃眼的很。
猴子脚本要等到网页载入完成后才生效。所以这脚本用处不大,晚上还是晃眼的很。
hocoo 发表于 2009-2-3 17:45
是啊,谁能给写个STYLISH啊?
是啊,谁能给写个STYLISH啊?
cwzh_115 发表于 2009-2-3 23:43
这脚本的原理是用JS新创建一个覆盖整个页面的半透明的层(div),而stylish只能修改已存在的元素的样式,并不能新建元素。所以stylish是无法解决的。
「往日如同阴魂,从它存在到你消失都会不断纠缠着你。」 ~晴空号的杰拉尔德
本帖最后由 凯杰 于 2009-2-4 15:34 编辑

能不能通过修改页面整体的背景颜色来实现? 不过这样有个问题就是, 图片就不能变暗了...
Welcome Humans!
We have come to visit you in peace and with goodwill!
    * Robots may not injure a human being or, through inaction, allow a human being to come to harm.
    * Robots have seen things you people wouldn't believe.
    * Robots are Your Plastic Pal Who's Fun To Be With.
    * Robots have shiny metal posteriors which should not be bitten.

And they have a plan.

嗯,或许通过修改整体页面的背景颜色, 文字颜色实现, 不过问题就是, 所有的图片都无法被遮盖了.
Welcome Humans!
We have come to visit you in peace and with goodwill!
    * Robots may not injure a human being or, through inaction, allow a human being to come to harm.
    * Robots have seen things you people wouldn't believe.
    * Robots are Your Plastic Pal Who's Fun To Be With.
    * Robots have shiny metal posteriors which should not be bitten.

And they have a plan.

嗯,或许通过修改整体页面的背景颜色, 文字颜色实现, 不过问题就是, 所有的图片都无法被遮盖了.
凯杰 发表于 2009-2-4 15:39
那样也行,可能透明背景也实现不了了~
本帖最后由 hocoo 于 2009-2-12 21:45 编辑
嗯,或许通过修改整体页面的背景颜色, 文字颜色实现, 不过问题就是, 所有的图片都无法被遮盖了.
凯杰 发表于 2009-2-4 15:39
========
那样的话效果非常不好,美观度几乎一点没有了。。。
其实可以在加载完页面之后自动打开遮光罩的...在脚本的最后加入以下语句就可以:

showCover();

以上.
Welcome Humans!
We have come to visit you in peace and with goodwill!
    * Robots may not injure a human being or, through inaction, allow a human being to come to harm.
    * Robots have seen things you people wouldn't believe.
    * Robots are Your Plastic Pal Who's Fun To Be With.
    * Robots have shiny metal posteriors which should not be bitten.

And they have a plan.

其实可以在加载完页面之后自动打开遮光罩的...在脚本的最后加入以下语句就可以:

showCover(        ;

以上.
凯杰 发表于 2009-2-5 15:16
凯杰,按你的方法改了之后,确实可以自动遮罩了,但是没进行一步操作就要关闭一次才行~
能不能把文字链接设为不遮罩,就像图片一样~
请教一下,增加暗度快捷键是"ALT + F5 "
那么,减少暗度有快捷键吗?谢谢!
请教一下,增加暗度快捷键是"ALT + F5 "
那么,减少暗度有快捷键吗?谢谢!
asimo 发表于 2009-2-6 10:19
"ALT + F5 "是启用该脚本的快捷键,没有自定义亮暗度的按键~

凯杰,这个想法很不错,可以增加调整亮度的快捷键
嗯,需求再多些重新整理一下可以开新帖发成原创脚本了 -_,-
Welcome Humans!
We have come to visit you in peace and with goodwill!
    * Robots may not injure a human being or, through inaction, allow a human being to come to harm.
    * Robots have seen things you people wouldn't believe.
    * Robots are Your Plastic Pal Who's Fun To Be With.
    * Robots have shiny metal posteriors which should not be bitten.

And they have a plan.

嗯,需求再多些重新整理一下可以开新帖发成原创脚本了 -_,-
凯杰 发表于 2009-2-6 14:54
经过这么多次调整,完全可以是原创了~
晕了,mark一下这贴,期待有减少亮度的版本
本帖最后由 hocoo 于 2009-2-11 16:14 编辑

顶下
昏厥,刚发现用了这个之后不能点链接了,只能滚屏。。
昏厥,刚发现用了这个之后不能点链接了,只能滚屏。。
argent 发表于 2009-2-11 04:24
嗯, 单独给楼主的脚本里面解决了这个问题...

这两天比较忙, 还没时间搞, 不如大家有什么需求先写下来?
Welcome Humans!
We have come to visit you in peace and with goodwill!
    * Robots may not injure a human being or, through inaction, allow a human being to come to harm.
    * Robots have seen things you people wouldn't believe.
    * Robots are Your Plastic Pal Who's Fun To Be With.
    * Robots have shiny metal posteriors which should not be bitten.

And they have a plan.

我也要能点链接的脚本,谢谢