您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
https://greasyfork.org/en/scripts/466065-blur-on-inactivity with additional features
- // ==UserScript==
- // @name Blur on inactivity Extended
- // @description https://greasyfork.org/en/scripts/466065-blur-on-inactivity with additional features
- // @author Sadulisten @ Greasyfork
- // @author Schimon Jehudah, Adv.
- // @namespace Sadulisten
- // @copyright 2023, Schimon Jehudah (http://schimon.i2p)
- // @license MIT; https://opensource.org/licenses/MIT
- // @exclude devtools://*
- // @match *://*/*
- // @version 25
- // @run-at document-end
- // @grant GM_addStyle
- // @icon data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIj48dGV4dCB5PSIuOWVtIiBmb250LXNpemU9IjkwIj7wn5al77iPPC90ZXh0Pjwvc3ZnPgo=
- // ==/UserScript==
- let sessionBlurDisabled = false;
- let originalPageTitle = document.title;
- let originalFaviconSource = getFavicon();
- const originalFilter = document.body.style.filter;
- const blurIntensity = 75;
- const inactivityThresholdSeconds = 60;
- const inactivityThresholdMiliseconds = inactivityThresholdSeconds * 1000;
- let isBlurred = false;
- function getFavicon() {
- var favicon = undefined;
- var nodeList = document.getElementsByTagName("link");
- for (var i = 0; i < nodeList.length; i++)
- {
- if((nodeList[i].getAttribute("rel") == "icon")||(nodeList[i].getAttribute("rel") == "shortcut icon"))
- {
- favicon = nodeList[i].getAttribute("href");
- break;
- }
- }
- if (favicon == undefined) return null;
- let isRelative = !favicon.includes("http");
- if (isRelative) favicon = (location.protocol == "https:" ? "https://www." : "http://www.") + window.location.hostname + favicon;
- return favicon;
- }
- function _changeFavicon(src) {
- var link = document.createElement('link'),
- oldLink = document.getElementById('dynamic-favicon');
- if (!oldLink) { oldLink = document.querySelector('link[rel*="icon"]');}
- link.id = 'dynamic-favicon';
- link.rel = 'shortcut icon';
- link.href = src;
- if (oldLink) {
- //document.head.removeChild(oldLink);
- oldLink.href = src;
- }
- document.head.appendChild(link);
- }
- function changeFavicon(newFaviconUrl) {
- let currentFaviconElement = document.querySelector('link[rel*="icon"]');
- if (currentFaviconElement) {
- currentFaviconElement.href = newFaviconUrl;
- if (!currentFaviconElement.hasAttribute("id"))
- currentFaviconElement.setAttribute("id", "dynamic-favicon");
- }
- else {
- var newFaviconElement = document.createElement('link');
- newFaviconElement.rel = "shortcut icon";
- newFaviconElement.id = "dynamic-favicon";
- newFaviconElement.href = newFaviconUrl;
- let head = document.getElementsByTagName("head")[0];
- if (!head) { document.head.insertBefore(newFaviconElement, document.head.firstChild); }
- else { head.insertBefore(newFaviconElement, head.firstChild); }
- }
- }
- function clamp(num, min, max) {
- return num <= min
- ? min
- : num >= max
- ? max
- : num
- }
- function addUnblurButton() {
- const btn = document.createElement("button");
- btn.id = blurButtonId;
- btn.innerHTML = "<span>👀</span>";
- btn.onclick = function() {
- document.querySelector("body").classList.remove("preventClicks");
- document.body.style.filter = originalFilter;
- blurButton.style.display = "none";
- blurCss.remove();
- blurCss = null;
- document.title = originalPageTitle;
- changeFavicon(originalFaviconSource);
- isBlurred = false;
- }
- GM_addStyle(
- `#${blurButtonId}
- {
- z-index:9999 !important;
- position:fixed !important;
- /*
- bottom:10px;
- right:10px;
- */
- top:50% !important;
- left:47% !important;
- display: none;
- box-shadow:inset 0px 1px 0px 0px #cf866c;
- background:linear-gradient(to bottom, #d0451b 5%, #bc3315 100%);
- background-color:#d0451b;
- color:#ffffff;
- border-radius:3px;
- border:1px solid #942911;
- cursor:pointer;
- font-family:Arial;
- font-size:13px;
- padding:6px 24px;
- text-decoration:none;
- text-shadow:0px 1px 0px #854629;
- }
- #${blurButtonId}:hover
- {
- background:linear-gradient(to bottom, #bc3315 5%, #d0451b 100%);
- background-color:#bc3315;
- }
- #${blurButtonId}:hover:after
- {
- content: " Unblur Page";
- }
- `
- );
- document.body.appendChild(btn);
- return btn;
- }
- function addBlurNowButton() {
- const borderRadius = 12;
- const clickArea = document.createElement("div");
- const blurNowStyleButtonName = "blurNowButtonStyle";
- clickArea.id = unBlurButtonId;
- clickArea.title = "Blur the page now";
- clickArea.innerHTML = "<p style='text-align:center;color:white;margin-top:5px;'>😈</p>";
- GM_addStyle(
- `.${blurNowStyleButtonName} {
- position:fixed !important;
- bottom:0px !important;
- right:10px !important;
- width:50px !important;
- height:25px !important;
- -webkit-border-top-left-radius: ${borderRadius}px;
- -webkit-border-top-right-radius: ${borderRadius}px;
- -moz-border-radius-topleft: ${borderRadius}px;
- -moz-border-radius-topright: ${borderRadius}px;
- border-top-left-radius: ${borderRadius}px;
- border-top-right-radius: ${borderRadius}px;
- box-shadow:inset 0px 1px 0px 0px #cf866c;
- background:linear-gradient(to bottom, #d0451b 5%, #bc3315 100%);
- background-color:#d0451b;
- transition: height 1s;
- z-index:9999 !important;
- text-decoration:none;
- text-shadow:0px 1px 0px #854629;
- }
- .${blurNowStyleButtonName}:hover {
- background:linear-gradient(to bottom, #bc3315 5%, #d0451b 100%);
- background-color:#bc3315;
- height:30px !important;
- cursor:pointer;
- }`);
- clickArea.classList.add("blurNowButtonStyle");
- document.body.appendChild(clickArea);
- clickArea.onclick = function() {
- blurPage();
- }
- return clickArea;
- }
- function addDontBlurThisSessionButton() {
- const borderRadius = 12;
- const clickArea = document.createElement("div");
- const dontBlurThiSessionButtonStyle = "dontBlurThiSessionButtonStyle";
- clickArea.id = unBlurButtonId;
- clickArea.title = "This will disable bluring for this tab";
- clickArea.innerHTML = '<p id="text" style="text-align:center;color:white;margin-top:5px;">⏸️</p>';
- GM_addStyle(
- `.${dontBlurThiSessionButtonStyle} {
- position:fixed !important;
- bottom:0px !important;
- right:65px !important;
- width:50px !important;
- height:25px !important;
- -webkit-border-top-left-radius: ${borderRadius}px;
- -webkit-border-top-right-radius: ${borderRadius}px;
- -moz-border-radius-topleft: ${borderRadius}px;
- -moz-border-radius-topright: ${borderRadius}px;
- border-top-left-radius: ${borderRadius}px;
- border-top-right-radius: ${borderRadius}px;
- box-shadow:inset 0px 1px 0px 0px #cf866c;
- background:linear-gradient(to bottom, #d0451b 5%, #bc3315 100%);
- background-color:#d0451b;
- transition: height 1s;
- z-index:9999 !important;
- text-decoration:none;
- text-shadow:0px 1px 0px #854629;
- }
- .${dontBlurThiSessionButtonStyle}:hover {
- background:linear-gradient(to bottom, #bc3315 5%, #d0451b 100%);
- background-color:#bc3315;
- height:30px !important;
- cursor:pointer;
- }`);
- clickArea.classList.add(dontBlurThiSessionButtonStyle);
- document.body.appendChild(clickArea);
- clickArea.onclick = function() {
- sessionBlurDisabled = !sessionBlurDisabled;
- dontBlurThisSessionButton.title = sessionBlurDisabled ? "This will enable bluring for this tab" : "This will disable bluring for this tab";
- dontBlurThisSessionButton.querySelector("#text").innerText = sessionBlurDisabled ? "▶️" : "⏸️";
- }
- return clickArea;
- }
- const blurButtonId = "unblurButton";
- const unBlurButtonId = "blurNowButton";
- const blurButton = addUnblurButton();
- var blurCss = null;
- const unBlurButton = addBlurNowButton();
- const dontBlurThisSessionButton = addDontBlurThisSessionButton();
- function blurPage() {
- if (isBlurred) return;
- if (blurCss == null) {
- blurCss = GM_addStyle(
- `body > *:not(#${blurButtonId}) {
- filter: blur(${clamp(blurIntensity, 1, 100)}px) !important;
- pointer-events: none !important;
- }`
- );
- }
- blurButton.style.display = "block";
- originalPageTitle = document.title;
- document.title = "Cute Kittens - Google Search";
- changeFavicon("https://t0.gstatic.com/faviconV2?client=SOCIAL&type=FAVICON&fallback_opts=TYPE,SIZE,URL&url=http://google.com&size=128");
- isBlurred = true;
- }
- onInactive(inactivityThresholdMiliseconds, function () {
- if (sessionBlurDisabled) return;
- blurPage();
- });
- function onInactive(ms, cb) {
- var wait = setInterval(cb, ms);
- window.ontouchstart =
- window.ontouchmove =
- window.onmousemove =
- window.onmousedown =
- window.onmouseup =
- window.onwheel =
- window.onscroll =
- window.onkeydown =
- window.onkeyup =
- window.onfocus =
- function () {
- clearInterval(wait);
- wait = setInterval(cb, ms);
- };
- }