🏠 Home 

Greasy Fork is available in English.

CTRL+Z 隐藏图片

通过按Ctrl+Z键依次切换:开启隐藏图片、开启缩小图片、开启隐藏图片但保持布局、关闭


Installer dette script?
// ==UserScript==
// @name         CTRL+Z 隐藏图片
// @name:zh      CTRL+Z 隐藏图片
// @name:en      CTRL+Z Hide Images
// @name:ja      CTRL+Z 画像を非表示
// @namespace    http://tampermonkey.net/
// @version      1.0.2
// @description  通过按Ctrl+Z键依次切换:开启隐藏图片、开启缩小图片、开启隐藏图片但保持布局、关闭
// @description:zh  通过按Ctrl+Z键依次切换:开启隐藏图片、开启缩小图片、开启隐藏图片但保持布局、关闭
// @description:en  Press Ctrl + Z to toggle between hiding images, scaling images, hiding images while maintaining layout, and closing the effects.
// @description:ja  Ctrl + Z を押して画像の非表示、画像の縮小、画像の非表示(レイアウトを維持)、効果を閉じるを切り替えます。
// @author       aotmd
// @match        *://*/*
// @noframes
// @license MIT
// @run-at document-body
// @grant       GM_setValue
// @grant       GM_getValue
// ==/UserScript==
( function() {
let SETTING = {
/*可以自定义快捷键,单个字母(ctrl+[key]生效);Customize shortcut keys, single letter (ctrl + [key] is effective);ショートカットキーをカスタマイズして、単一の文字(ctrl + [key])が有効です*/
key:"Z",
/*也对background-image设置的图片进行隐藏;Also hides images set with background-image.;background-image で設定された画像も非表示にします。*/
background_image: false,
/*background-image的宽高大于此值时才生效;The effect only applies when the width and height of the background-image are greater than this value.;background-imageの幅と高さがこの値より大きい場合にのみ効果が適用されます。*/
width: 100,
height: 100,
}
let url = window.location.origin;
const head = document.getElementsByTagName( "head" )[ 0 ];
let List = GM_getValue( "List" ) ? GM_getValue( "List" ) : {};
let flag = List[ url ] ? List[ url ] : {};
const hideNode = createStyleNode( "hideNode", "img{display:none!important;}.hide-background-image{background-image:none!important;}" );
const scaleNode = createStyleNode( "scaleNode", "img{transform: scale(0.5);}.hide-background-image{background-size: 50% 50% !important;background-position: center;}" );
const opacityNode = createStyleNode( "opacityNode", "img{transform: scale(0.5);opacity: 0!important; transition: opacity 0.3s ease-in-out;}.hide-background-image{background-size: 0 0 !important;background-position: center;transition: background-size 0.3s ease-in-out;}" );
head.appendChild( hideNode );
head.appendChild( scaleNode );
head.appendChild( opacityNode );
applyStyles();
function applyStyles() {
if ( flag ) {
// 设置隐藏图片样式;Set hidden image style;隠れた画像スタイルを設定します。
hideNode.type = flag.hide ? "text/css" : "text";
// 设置缩小图片样式;Set reduced image style;縮小された画像スタイルを設定します。
scaleNode.type = flag.scale ? "text/css" : "text";
// 设置透明隐藏图片样式;Set transparent hidden image style;透明な非表示画像スタイルを設定します。
opacityNode.type = flag.opacity ? "text/css" : "text";
}
}
function createStyleNode( id, css ) {
const styleNode = document.createElement( "style" );
styleNode.id = id;
styleNode.innerHTML = css;
styleNode.type = "text";
return styleNode;
}
if(SETTING.key.charCodeAt(0)>97){
SETTING.key=String.fromCharCode(SETTING.key.charCodeAt(0)-32);
}
if(SETTING.key.charCodeAt(0)<65 ||SETTING.key.charCodeAt(0)>97){
console.error("快捷键设置错误,请设置为单个字母。;The shortcut key setting is incorrect. Please set it to a single letter. ;ショートカットキーの設定が間違っています。1文字に設定してください。");
return;
}
document.addEventListener( "keydown", function( e ) {
if ( e.ctrlKey && e.keyCode == SETTING.key.charCodeAt(0) ) {
if ( flag.hide ) { //第二次按,生效scale;Second press, scale effect;2回目の押し, スケール効果
flag = {}
flag.scale = true;
} else if ( flag.scale ) { //第三次按,生效透明;Third press, transparent effect;3回目の押し, 透明な効果
flag = {}
flag.opacity = true;
} else if ( flag.opacity ) { //第四次按,取消全部;Fourth press, cancel all;4回目の押し, すべてキャンセル
flag = {}
} else { //第一次按生效hide;First press, hide effect;最初の押し, 非表示効果
flag = {}
flag.hide = true;
}
applyStyles();
//重新读取同步数据;Reload synchronous data;同期データを再読み込み
List = GM_getValue( "List" ) ? GM_getValue( "List" ) : {};
if(Object.keys(flag).length === 0){
delete List[ url ]
}else{
List[ url ] = flag;
}
GM_setValue( "List", List );
}
} );
if ( SETTING.background_image ) {
window.addEventListener( 'load', function() {
// 加载完成后执行的代码;Code to run after loading;読み込み後に実行するコード
// 选择所有元素;Select all elements;すべての要素を選択
var elements = document.querySelectorAll( '*' );
// 遍历所有元素;Iterate over all elements;すべての要素を繰り返し処理
elements.forEach( function( element ) {
// 获取元素的 computedStyle;Get the computed style of the element;要素の計算済みスタイルを取得
var style = window.getComputedStyle( element );
// 检查是否有 background-image 属性;Check if the element has a background-image property;要素が background-image プロパティを持っているかどうかを確認
if ( style.getPropertyValue( 'background-image' ) !== 'none' &&
style.getPropertyValue( 'background-image' ).includes( 'url' ) &&
parseInt( style.width ) > SETTING.width &&
parseInt( style.height ) > SETTING.height ) {
// 添加一个新的类来隐藏元素;Add a new class to hide the element;要素を非表示にする新しいクラスを追加
element.classList.add( 'hide-background-image' );
}
} );
}, false );
}
} )();