// ==UserScript==
// @name DarkTheme
// @name:zh-CN 网页黑色主题
// @namespace https://greasyfork.org/zh-CN/users/104201
// @version 0.1
// @description Tabs in Dark Theme
// @description:zh-CN 网页切换为黑色主题
// @author 黄盐
// @include *
// @noframes
// @require https://cdnjs.cloudflare.com/ajax/libs/zepto/1.2.0/zepto.min.js
// @grant unsafeWindow
// @run-at document-start
// @grant GM_setValue
// @grant GM_getValue
// @grant GM.setValue
// @grant GM.getValue
// @grant GM_registerMenuCommand
// @grant GM_unregisterMenuCommand
// @downloadURL none
// ==/UserScript==
/* jshint esversion: 6 */
;
(function() {
'use strict';
const CSS = `
:root{-webkit-filter:invert(100%) contrast(87%);filter:invert(100%) contrast(87%);background:#272822!important;}
img{-webkit-filter:invert(100%) brightness(105%);filter:invert(100%) brightness(105%);}
*[style*="url"]{-webkit-filter:invert(100%);filter:invert(100%);}
*[data-dmbg="1"]{-webkit-filter:none;filter:none;}
*[data-dmbg="2"]{-webkit-filter:invert(100%);filter:invert(100%);}
video,embed,object,canvas{-webkit-filter:invert(100%);filter:invert(100%);}
/* 图标 */
::before{-webkit-filter:invert(100%);filter:invert(100%);}
/* 图标 排除font-awesome图标 */
.fa::before{-webkit-filter:invert(0%);filter:invert(0%);}
/* 下面的 img img 这种选择器,是指那些被点击后图片会放大的图片,如微博里面小图, 方案: 眼睛护航crx*/
:-webkit-any(iframe,img,[style*="url"]:not(input),i,video,object,embed:not([type$="pdf"])):-webkit-any(iframe,img,[style*="url"]:not(input),i,video,object,embed:not([type$="pdf"])){-webkit-filter:none;filter:none;}
:-moz-any(iframe,img,[style*="url"]:not(input),i,video,object,embed:not([type$="pdf"])):-moz-any(iframe,img,[style*="url"]:not(input),i,video,object,embed:not([type$="pdf"])){filter:none;}
img[src*="logo"]{-webkit-filter:invert(0%);filter:invert(0%);}
`;
const defaultCSSlist = {
".*baidu.com": {
name: "百度",
enable: 0,
default: 1,
css: "/* baidu search,news,wenku logo*/\n#result_logo img, .s_logo img, .logo img {\n -webkit-filter: invert(0%);\n filter: invert(0%);\n}"
},
".iqiyi.com": {
name: "爱奇艺",
enable: 1,
default: 1,
css: "/*index*/\n#adSkinInner #block-A,\ndiv#block-C,\ndiv#block-B { -webkit-filter: invert(100%); filter: invert(100%); }\n\n/*首页图片*/\n.skin_focus li[style*=\"background-image\"] { -webkit-filter: invert(0%); filter: invert(0%); }\n\n/*播放页*/\n#block-B video,\n#block-B img { -webkit-filter: invert(0%); filter: invert(0%); }\n.topNav-player,\n.topNav-pindao { background: #e4e4e4; }\ndiv.navMid.clearfix,\ndiv.navcont.clearfix { -webkit-filter: invert(100%); filter: invert(100%); }\ndiv.mod-breadcrumb { -webkit-filter: invert(0%); filter: invert(0%); background: black; }"
}
};
var darkThemeSwitch, csslist, blackList, pageFirstLoad = true;
/*这里不采用GM_addStyle,
*是为了避免网页局部更新的时候,把
内部的`, {
id: "cssManagePanel"
});
$('body').append(managePanel);
})
.then(() => {
$('#cssManagePanel button[name=editCSS]').one('click', editButton);
$('#cssManagePanel button[name=deleteCSS]').one('click', deleteButton);
$('#cssManagePanel button[name=addCSS]').on('click', addButton);
// $('#cssManagePanel button[name=saveCSS]').on('click', saveButton);
hightLight();
});
}
function hightLight(){
/* PrismJS 1.9.0
http://prismjs.com/download.html?themes=prism-solarizedlight&languages=css */
var _self="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},Prism=function(){var e=/\blang(?:uage)?-(\w+)\b/i,t=0,n=_self.Prism={manual:_self.Prism&&_self.Prism.manual,disableWorkerMessageHandler:_self.Prism&&_self.Prism.disableWorkerMessageHandler,util:{encode:function(e){return e instanceof r?new r(e.type,n.util.encode(e.content),e.alias):"Array"===n.util.type(e)?e.map(n.util.encode):e.replace(/&/g,"&").replace(/e.length)return;if(!(w instanceof s)){h.lastIndex=0;var _=h.exec(w),P=1;if(!_&&m&&b!=t.length-1){if(h.lastIndex=k,_=h.exec(e),!_)break;for(var A=_.index+(d?_[1].length:0),j=_.index+_[0].length,x=b,O=k,N=t.length;N>x&&(j>O||!t[x].type&&!t[x-1].greedy);++x)O+=t[x].length,A>=O&&(++b,k=O);if(t[b]instanceof s||t[x-1].greedy)continue;P=x-b,w=e.slice(k,O),_.index-=k}if(_){d&&(p=_[1].length);var A=_.index+p,_=_[0].slice(p),j=A+_.length,S=w.slice(0,A),C=w.slice(j),M=[b,P];S&&(++b,k+=S.length,M.push(S));var E=new s(g,f?n.tokenize(_,f):_,y,_,m);if(M.push(E),C&&M.push(C),Array.prototype.splice.apply(t,M),1!=P&&n.matchGrammar(e,t,r,b,k,!0,g),i)break}else if(i)break}}}}},tokenize:function(e,t){var r=[e],a=t.rest;if(a){for(var l in a)t[l]=a[l];delete t.rest}return n.matchGrammar(e,r,t,0,0,!1),r},hooks:{all:{},add:function(e,t){var r=n.hooks.all;r[e]=r[e]||[],r[e].push(t)},run:function(e,t){var r=n.hooks.all[e];if(r&&r.length)for(var a,l=0;a=r[l++];)a(t)}}},r=n.Token=function(e,t,n,r,a){this.type=e,this.content=t,this.alias=n,this.length=0|(r||"").length,this.greedy=!!a};if(r.stringify=function(e,t,a){if("string"==typeof e)return e;if("Array"===n.util.type(e))return e.map(function(n){return r.stringify(n,t,e)}).join("");var l={type:e.type,content:r.stringify(e.content,t,a),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:a};if(e.alias){var i="Array"===n.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(l.classes,i)}n.hooks.run("wrap",l);var o=Object.keys(l.attributes).map(function(e){return e+'="'+(l.attributes[e]||"").replace(/"/g,""")+'"'}).join(" ");return"<"+l.tag+' class="'+l.classes.join(" ")+'"'+(o?" "+o:"")+">"+l.content+""+l.tag+">"},!_self.document)return _self.addEventListener?(n.disableWorkerMessageHandler||_self.addEventListener("message",function(e){var t=JSON.parse(e.data),r=t.language,a=t.code,l=t.immediateClose;_self.postMessage(n.highlight(a,n.languages[r],r)),l&&_self.close()},!1),_self.Prism):_self.Prism;var a=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return a&&(n.filename=a.src,n.manual||a.hasAttribute("data-manual")||("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(n.highlightAll):window.setTimeout(n.highlightAll,16):document.addEventListener("DOMContentLoaded",n.highlightAll))),_self.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=Prism),"undefined"!=typeof global&&(global.Prism=Prism);
Prism.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(?:;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^{}\s][^{};]*?(?=\s*\{)/,string:{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/\B!important\b/i,"function":/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},Prism.languages.css.atrule.inside.rest=Prism.util.clone(Prism.languages.css),Prism.languages.markup&&(Prism.languages.insertBefore("markup","tag",{style:{pattern:/(