您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
夜间模式
- // ==UserScript==
- // @name geek dark mode
- // @name:zh-CN 极客夜间模式
- // @description dark mode
- // @description:zh-cn 夜间模式
- // @version 1.1
- // @author Anc
- // @match *://*/*
- // @exclude *://*localhost*
- // @exclude *://*127.0.0.1*
- // @run-at document.start
- // @grant GM.addStyle
- // @grant GM_registerMenuCommand
- // @grant GM_setValue
- // @grant GM_getValue
- // @noframes
- // @namespace https://greasyfork.org/users/61607
- // ==/UserScript==
- (function() {
- 'use strict';
- // Add meta tag
- let meta = document.createElement('meta');
- meta.name = "theme-color";
- meta.content = "#000";
- meta.media = "(prefers-color-scheme: dark)";
- document.head.append(meta);
- function unsetFilter() {
- var elements = document.getElementsByTagName('*');
- for (var i = 0; i < elements.length; i++) {
- elements[i].style.filter = 'unset';
- }
- }
- // Function to create a button
- function createButton() {
- var button = document.createElement('button');
- button.textContent = 'White';
- button.style.position = 'fixed';
- button.style.top = '10px';
- button.style.right = '10px';
- button.style.padding = '10px';
- button.style.backgroundColor = '#007bff';
- button.style.color = '#ffffff';
- button.style.border = 'none';
- button.style.borderRadius = '5px';
- button.style.cursor = 'pointer';
- button.style.zIndex = '999';
- document.body.appendChild(button);
- button.addEventListener('click', unsetFilter);
- }
- // Function to add the current website's domain to the array and save it
- function addDomainToArray() {
- var domain = window.location.hostname;
- var trackedDomains = GM_getValue('trackedDomains', []);
- // Check if domain already exists in the array
- var index = trackedDomains.indexOf(domain);
- if ( index === -1) {
- trackedDomains.push(domain);
- GM_setValue('trackedDomains', trackedDomains);
- console.log('Domain ' + domain + ' added to tracking list.');
- unsetFilter();
- } else {
- console.log('Domain ' + domain + ' is already in tracking list, remove it.');
- trackedDomains.splice(index, 1);
- GM_setValue('trackedDomains', trackedDomains);
- console.log("trackedDomains", trackedDomains);
- checkDomain();
- }
- }
- // Function to check if the current domain is in the array and alert if so
- function checkDomain() {
- var domain = window.location.hostname;
- var trackedDomains = GM_getValue('trackedDomains', []);
- console.log("trackedDomains", trackedDomains);
- if (trackedDomains.indexOf(domain) === -1){
- console.log('dark domain: ' + domain);
- // Add style
- GM.addStyle(`
- @media (prefers-color-scheme: dark) {
- :root {
- filter: invert(1) hue-rotate(180deg);
- }
- figure,img,video,iframe,div[style*=image]{
- filter: invert(1) hue-rotate(180deg);
- opacity:1;
- }
- figure img {
- filter: unset;
- }
- }
- `)
- if(window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {
- createButton();
- }
- }
- }
- // Register a menu command to add the current domain to the tracking list
- GM_registerMenuCommand('Add/Reomove', addDomainToArray);
- // Check the domain when the page loads
- checkDomain();
- })();