Greasy Fork

Greasy Fork is available in English.

网页亮度调整

用这个脚本来调整你的网页亮度

当前为 2018-10-24 提交的版本,查看 最新版本

// ==UserScript==
// @name         网页亮度调整
// @namespace    mscststs
// @version      0.2
// @description  用这个脚本来调整你的网页亮度
// @require 	http://greasyfork.icu/scripts/373588-mscststs-eventbus/code/mscststs-EventBus.js?version=639557
// @author       mscststs
// @include        /.*/
// @grant 		GM_setValue
// @grant 		GM_getValue
// @grant 		GM_addValueChangeListener
// @grant       GM_registerMenuCommand
// @grant		unsafeWindow
// @noframes
// @run-at document-end
// ==/UserScript==

(function() {
    'use strict';
	const Default_config={
		globalBrightness: 0.9,
		SingleConfigMap:{
			/* {
					[window.location.host] : 0.9,
			}*/
		}
	}
	const body = document.querySelector("body");
	
	let gm = new class{
		constructor(){
			this.key = "mscststs-brightness";
			this.init();
		}
		init(){
			GM_registerMenuCommand("打开亮度调整菜单",()=>{
				eve.emit("Cmd-OpenMenu");
			});
			GM_addValueChangeListener(this.key,(name, old_value, new_value, remote)=>{
				eve.emit("SettingUpdated",new_value);
			});
		}
		getNowBrightness(){
			let config = this.getConfig();
			return config.SingleConfigMap[window.location.host] || config.globalBrightness;
		}
		getConfig(){
			//读取配置文件
			return GM_getValue(this.key,Default_config);
		}
		setConfig(value){
			GM_setValue(this.key,value);
		}
		setGlobalBrightness(value){
			let config = this.getConfig();
			config.globalBrightness = value;
			this.setConfig(config);
		}
		setHostBrightness(value,host = window.location.host){
			let config = this.getConfig();
			config.SingleConfigMap[host] = value;
			this.setConfig(config);
		}
	}();
	
	function OpenMenuPage(){
		if(document.querySelector("#helper_brightness")){
			//当前Menu已存在
		}else{
			//Menu不存在,需要打开Menu
			let div = document.createElement("div");
			div.id = "helper_brightness";
			div.innerHTML = `

  <div class="brightness-title">
    亮度调整
  </div>
  <div class="brightness-Menu">

    <div class="single">
      <div class="controller">
        <input id="helper_brightness_range" type="range" min="0" max="1" step="0.01" value="`+gm.getNowBrightness()+`"/>
      </div>
       <div class="desc">
         <div id="brightness-value">
           0.8
         </div>
         <div>
         <button id="helper_brightness_setAsDefault">
           设为默认亮度
         </button>
         </div>
         <div>
         <button id="helper_brightness_closeSettingPage">
           关闭设置窗口
         </button>
         </div>
       </div>
    </div>
  </div>

<style>
#helper_brightness{
  position:fixed;
  color:black !important;
  display:block;
  left:calc( 50% - 210px);
  top:10%;
  border:1px solid #aaa;
  min-height:300px;
  width:400px;
  border-radius:8px;
  box-shadow:0 0 15px 0 #999;
  background-color:#eee;
  padding:10px;
  user-select:none;
  z-index:1000000; //100w
}
.brightness-title{
  color:black !important;
  text-align:center;
  border-bottom:1px solid #ccc;
  font-size:1.7em;
  line-height:2.5em;
}
#helper_brightness input[type=range] {
    background-color:rgb(221, 221, 221);
    -webkit-appearance: none;
    width: 300px;
    border-radius: 10px; /*这个属性设置使填充进度条时的图形为圆角*/
}
#helper_brightness input[type=range]::-webkit-slider-thumb {
    -webkit-appearance: none;
}

#helper_brightness input[type=range]::-webkit-slider-runnable-track {
    height: 15px;
    border-radius: 10px; /*将轨道设为圆角的*/
    box-shadow: 0 1px 1px #def3f8, inset 0 .125em .125em #0d1112; /*轨道内置阴影效果*/
}

#helper_brightness input[type=range]:focus {
    outline: none;
}

#helper_brightness input[type="range"]::-webkit-slider-thumb{
  width:25px;
  -webkit-appearance: none;
  height: 25px;
  margin-top: -5px; /*使滑块超出轨道部分的偏移量相等*/
  background: #ffffff;
  border-radius: 50%; /*外观设置为圆形*/
  border: solid 0.125em rgba(205, 224, 230, 0.5); /*设置边框*/
  box-shadow: 0 .125em .125em #3b4547; /*添加底部阴影*/

}

#helper_brightness .brightness-Menu{
  margin-top:25px;
}
#helper_brightness .controller{
  padding:5px 0;
  margin:0 auto;
  width:300px;
}
#helper_brightness .desc{
  text-align:center;
  line-height:35px;
}
#helper_brightness button{
  background-color:#eee;
  font-size:14px;
  line-height:30px;
  border: 1px #bebebe solid;
  height: 30px;
  padding-left: 5px;
  padding-right: 5px;
}
#helper_brightness button:hover{

  border: 1px #999 solid;
}

#brightness-value{
  font-size:2.6em;
  height:60px;
  line-height:60px;
  color:black !important;
}

</style>


			`
			body.appendChild(div);
			
			let rangeController = document.querySelector("#helper_brightness_range");
			let setAsDefaultBtn = document.querySelector("#helper_brightness_setAsDefault");
			let closeSettingPage = document.querySelector("#helper_brightness_closeSettingPage");
			let brightnessValue = document.querySelector("#brightness-value");

			rangeController.addEventListener("input",(e)=>{
			  let value = e.target.value;
			  brightnessValue.innerText = value;
			  gm.setHostBrightness(value);
			})
			setAsDefaultBtn.addEventListener("click",(e)=>{
			  //设为默认亮度
			  let value = rangeController.value;

			  gm.setGlobalBrightness(value);
			  alert("网页默认亮度已被设置为"+value+"!");
			})
			closeSettingPage.addEventListener("click",(e)=>{
			  CloseMenuPage();
			})

		}
	}
	function CloseMenuPage(){
		let menu = document.querySelector("#helper_brightness");
		if(menu){
			menu.remove();
		}
	}
	
	
	eve.on("Cmd-OpenMenu",()=>{
		OpenMenuPage();
	})
	eve.on("SettingUpdated",()=>{
		Init();
	})
	

	
	function Init(){
		let div = document.querySelector("#helper_BrightnessCover");
		if(!div){
			div=document.createElement("div");
			div.id = "helper_BrightnessCover";
			body.appendChild(div);
		}
		div.innerHTML = `
<style>
body::after{
content:"";
display:block;
background-color:rgba(0,0,0,`+(1-gm.getNowBrightness())+`);

position:fixed;
left:0;
top:0;
z-index:999999;
width:100%;
height:100%;
pointer-events: none;
}
</style>
		`;
	}
	
	Init();
	
	
	//肮脏的按键绑定代码
	let KEY = false;
	body.addEventListener("keydown",(e)=>{
		if(e.keyCode==17){
			KEY = true;
		}
	})
	body.addEventListener("keyup",(e)=>{
		if(e.keyCode==17){
			KEY = false;
		}
	})
	body.addEventListener("dblclick",(e)=>{
		if(KEY){
			eve.emit("Cmd-OpenMenu")
		}
	})
})();