知识改变命运! lskyf - 编程,AI,知识共享

【扩展程序】浏览器秒变水墨屏眼睛不累了

chrome扩展程序 1年前 ⋅ 612 阅读 ⋅ 0 个赞

什么?浏览器也能变水墨屏?骗人吧!我这幼小的心灵怎么能经得起这么严重创伤的呢? 当然,这样说确实是过头了,所谓水墨屏不就是黑白灰色吗?很普通的嘛! 嗯嗯...好像说的也是有道理的。那我们就来个假装水墨屏吧! 偶然间小编真的在网上发现了这么一个假装水墨屏的脚本。给大家分享一下。虽然不至于缓解眼睛疲劳。但是偶尔用用,眼睛可能也会舒服一点。就算是给小小的窗户放个假啦。

有图有真相,小二,上图伺候!

未开启前图片

黑白模式

反色模式

彩色模式

下面介绍下如何使用?

首先,安装脚本管理器Tampermonkey chrome webstore地址:

https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo

如果chrome webstore无法访问,下载不了怎么办? cj.lskyf.com下载地址: https://cj.lskyf.com/dhdgffkkebhmkfjojejmpbldmpobfkfo.html

将下载后的zip解压,得到一个cxt文件,将cxt文件的后缀改为zip

打开chrome浏览器-->输入 chrome://extensions/ -->回车-->将zip文件拖进浏览器chrome://extensions/ 页面

然后到浏览器右上角三个小点找到Tampermonkey图标-->鼠标左击后显示下拉菜单中-->选择新建用户脚本-->然后复制以下代码到编辑器


// ==UserScript==
// @name        假装水墨屏
// @name:en-US  Fake Ink Screen
// @namespace   Fake Ink Screen
// @match       *://*/*
// @grant       GM_addStyle
// @grant       GM_getValue
// @grant       GM_setValue
// @grant       GM_deleteValue
// @grant       GM_registerMenuCommand
// @run-at      document-start
// @inject-into content
// @version     0.2.3
// @author      稻米鼠
// @created     2020-07-24 13:02:56
// @updated     2020-08-10 18:51:07
// @description 假装用的水墨屏,阅读不累眼(可能吧)。最新加入彩色&反色水墨屏模式,在脚本菜单中切换。
// ==/UserScript==
​
(function(){
// 闭包 Start
GM_addStyle(`
  html.gray-ink-screen {
    -webkit-filter: grayscale(100%) brightness(120%);
    -moz-filter: grayscale(100%) brightness(120%);
    -ms-filter: grayscale(100%) brightness(120%);
    -o-filter: grayscale(100%) brightness(120%);
    filter: grayscale(100%) brightness(120%);
  }
  html.dark-ink-screen {
    -webkit-filter: grayscale(100%) brightness(120%) invert(100%);
    -moz-filter: grayscale(100%) brightness(120%) invert(100%);
    -ms-filter: grayscale(100%) brightness(120%) invert(100%);
    -o-filter: grayscale(100%) brightness(120%) invert(100%);
    filter: grayscale(100%) brightness(120%) invert(100%);
  }
  html.color-ink-screen {
    -webkit-filter: saturate(60%) contrast(160%);
    -moz-filter: saturate(100%) contrast(160%);
    -ms-filter: saturate(60%) contrast(160%);
    -o-filter: saturate(60%) contrast(160%);
    filter: saturate(60%) contrast(160%);
  }
  html.gray-ink-screen,
  html.gray-ink-screen body,
  html.gray-ink-screen .ink-background,
  html.dark-ink-screen,
  html.dark-ink-screen body,
  html.dark-ink-screen .ink-background {
    background-color: rgb(200, 200, 200) !important
  }
  html.color-ink-screen,
  html.color-ink-screen body,
  html.color-ink-screen .ink-background {
    background-color: rgb(198, 198, 198) !important
  }
  html.dark-ink-screen .ink-font,
  html.gray-ink-screen .ink-font {
    color: rgb(66, 66, 66) !important
  }
  html.color-ink-screen .ink-font {
    color: rgb(98, 98, 98) !important
  }
  html.gray-ink-screen * {
    text-shadow: 0 0 1.2rem rgba(0, 0, 0, .24), 0 0 .5px rgba(0, 0, 0, .5)
  }
  html.color-ink-screen * {
    text-shadow: 0 0 1.2rem rgba(0, 0, 0, .2), 0 0 .5px rgba(0, 0, 0, .4)
  }
`);
const modes = ['gray-ink-screen', 'color-ink-screen', 'dark-ink-screen']
const toggleMode = (modeIndex)=>{
  for(const className of modes) {
    document.body.parentElement.classList.remove(className)
  }
  document.body.parentElement.classList.add(modes[modeIndex])
}
toggleMode(GM_getValue('mode', 0))
GM_registerMenuCommand('切换【黑白&彩色&反色】水墨屏',()=>{
  let mode = GM_getValue('mode', 0)
  mode = mode>=2 ? 0 : ++mode
  toggleMode(mode)
  GM_setValue('mode', mode)
})
window.addEventListener('load', () => {
  const inkEl = async(el) => {
    const fontColor = window.getComputedStyle(el).color.match(/\d+/g);
    const rgbVal = window.getComputedStyle(el).backgroundColor.match(/\d+/g);
    if(!fontColor || !rgbVal) return;
    if (
      fontColor &&
      +fontColor[0] + +fontColor[1] + +fontColor[2] > 255 &&
      +fontColor[0] + +fontColor[1] + +fontColor[2] < 588
    ) {
      el.classList.add('ink-font');
    }
    if (rgbVal[3] && rgbVal[3] === '0') return;
    if (
      (+rgbVal[0] + +rgbVal[1] + +rgbVal[2]) / (rgbVal[3] ? +rgbVal[3] : 1) >
      640
    )
      el.classList.add('ink-background');
  };
  document.body.querySelectorAll('*').forEach((el) =>  inkEl(el) );
  const obOptions = {
    childList: true,
    subtree: true,
    attributes: true,
    characterData: true,
    attributeOldValue: false,
    characterDataOldValue: false,
    attributeFilter: [],
  };
  const observer = new MutationObserver(async (records, observer) => {
    observer.disconnect();
    const els = records
      // 改变的类型为 characterData,并且不是 body 元素的话
      .filter((el) => /^characterData$/i.test(el.type))
      .map((el) => el.target); // 把发生改变的元素放入合集
    // 改变的类型为 childList,则把新增的元素放入合集
    records
      .filter((el) => /^childList$/i.test(el.type))
      .forEach((el) => {
        el.addedNodes.forEach((node) => els.push(node));
      });
    // 遍历合集中所有元素
    for await (el of els) {
      if(el.nodeType === 1) {
        inkEl(el);
        el.querySelectorAll('*').forEach(e=>inkEl(e))
      }
    }
    // 页面处理完成之后重新监控页面变化
    observer.observe(document.body, obOptions);
  });
  observer.observe(document.body, obOptions);
});
// 闭包 End
})()

CTRL+S保存脚本代码后,查看脚本处于开启状态

刷新网页查看效果(可能需要切换模式)

在黑白模式,彩色模式和反色模式之间切换

到浏览器右上角找到Tampermonkey鼠标左键-->找到点击切换【黑白&彩色&反色】水墨屏即可

总结:为什么有水墨屏?其实大家的初衷也只是想解决视觉疲劳,保护好自己的眼睛。所以最重要的还是要在疲劳的时候多休息一下眼睛,从繁忙的工作做挤出那么几分钟的时间也是值得的! 关注公众号【扩展程序】为工作生活加把力!


全部评论: 0

    我有话说:

    手机黑机?

             正玩这手机但是手机突然黑,开机键无论怎么按完全起作用。焦急的心理欲哭无泪啊!下面给大家讲述一个强制开机的方法(我的是

    crxMouse Chrome™ 扩展程序让你像在手机上操作应用一样操作chrome浏览器上的网页

    推荐一个chrome扩展程序crxMouse Chrome™ 手势,只需一个鼠标手势就可以像在手机上操作应用一样简单的操作 chrome浏览器上的网页,方便快捷提高工作效 1.下载crxMouse

    如何离线安装google离线扩展程序

    1.浏览器输入http://cj.lskyf.com 2.搜索到你需要的chrome插件并下载 3.打开Chrome浏览器,依次点击更多工具->扩展程序->进入插件管理界面。 4

    chrome 离线扩展程序安装报错 程序包无效:"CRX_HEADER_INVALID"

    安装chrome离线扩展程序时候报错:程序包无效:"CRX_HEADER_INVALID"导致crx扩展程序无法正常安装。 怎么办呢? 解决方法:将crx文件后缀.crx改为.zip然后重新拖进

    扩展程序】用广告拦截器提高工作效率

    生活处处是广告,又爱又恨的复杂情感! 现在各种网站都免不了广告,然后有强迫症的我就是想一直关闭关闭,结果浪费没有必要的时间,然后之前同事安利一个广告拦截器,有安装过,是起到一定的作用,虽然

    开启免打扰模式——Chrome谷歌浏览器广告拦截器

    我们在Chrome谷歌浏览器浏览网页的时候经常被太多广告打扰,阻挡我们视线。如果你也有这些烦恼,那么试试下面几款广告拦截器吧,使用之后心情确实一个happy得! AdGuard 广告拦截器 下载

    分享5款手机截方法

    已离不开截这个功用,小编的手机里现已装好几百...

    最新OPPO手机如何键截开启双击亮功能?

    前言 经常使用oppo手机要是知道这样可以双击亮,有多方便谁用谁知道。如何设置呢?下面是步骤 1.在手机桌面找到设置 2.便捷辅助 3.黑手势 4.打开黑手势开关显示出下面的双击亮然后

    转 微信小程序错误码参考

      微信小程序错误码参考 状态码(场景值) 说明  -1 系统繁忙  0 请求成功  40001 验证失败  40002

    土味情话--520准备好吗?

    1.你知道你和星星有什么区别吗?星星在天上,而你在我心里。 2.来者何人?你的人 4.你啊? 啊,可是你都在我脑子里跑一整天。 5.莫文蔚的阴天,孙燕姿的雨天,周杰伦的晴天,都如你

    idea diagrams找

    问题: 之前我的idea有diagrams查看类关系特别方便,最近发现找 解决: 打开File ->Settings -> Plugins -> install ->

    微信小程序报错request:fail url not in domain list

    微信小程序报错request:fail url not in domain list 登录小程序后台 https://mp.weixin.qq.com/ 选择开发--开发设置--服务器域名--服务器

    csdn博客专栏出bug好久,之前我申请的专栏不见,我的专栏达人勋章也不见,后面申请的专栏文章数量正确,热度也正确!

      csdn博客专栏出bug好久,之前我申请的专栏不见,我的专栏达人勋章也不见,后面申请的专栏文章数量正确,热度也正确!客服说工程师在修复,知道什么时候修复好啊!我之前的专栏

    电脑win10如何设置护眼模式,减少蓝光对眼睛带来伤害?

    如何设置电脑护眼模式,减少蓝光对眼睛带来伤害? 1.诉求:电脑用久眼睛疼痛或者干涩不已,试试设置电脑护眼模式,减少蓝光对眼睛带来伤害。 2.步骤 点击左下角window(开始)-->设置

    android(安卓)手机微信,qq,钉钉等app的、定位怎么办?

    1.前言: 如今的应用不管是手机微信(微信小程序),qq,钉钉还是其他的应用的都会申请使用用户的位置信息,相机,电话,录音等等权限,如果授予相应权限那么app应用就无法使用 说明: 如何给手机微信

    加入公众号
    加入公众号