【善者神佑】【脚本】快捷切换图片
https://img.gamemale.com/album/202508/19/184944x0tt4fffq8zqhzpv.jpg点开图片时,按ad或者←→快捷切换图片
@Name @Match
// ==UserScript==
// @name GM查看图片
// @version 0.1
// @author MKM
// @match https://www.gamemale.com/*
// ==/UserScript==
(function() {
'use strict';
const config = {
hotkey: {
prev: 'ArrowLeft',
next: 'ArrowRight',
close: 'Escape',
prevAlt: 'a',
nextAlt: 'd'
}
};
function isImageViewerActive() {
const viewer = document.getElementById('imgzoom');
if (!viewer) return false;
const style = window.getComputedStyle(viewer);
return style.display !== 'none' && style.visibility !== 'hidden';
}
function clickPrev() {
const prevBtn = document.getElementById('zimg_prev');
if (prevBtn && isImageViewerActive()) {
prevBtn.click();
}
}
function clickNext() {
const nextBtn = document.getElementById('zimg_next');
if (nextBtn && isImageViewerActive()) {
nextBtn.click();
}
}
function closeViewer() {
const closeBtn = document.querySelector('#imgzoom .imgclose');
if (closeBtn && isImageViewerActive()) {
closeBtn.click();
}
}
function addViewerKeyboardListener() {
const viewer = document.getElementById('imgzoom');
if (!viewer || viewer.dataset.keyboardListenerAdded) return;
viewer.addEventListener('keydown', handleViewerKeyDown, true);
viewer.dataset.keyboardListenerAdded = 'true';
viewer.setAttribute('tabindex', '-1');
}
function handleViewerKeyDown(e) {
if (!isImageViewerActive()) return;
let handled = false;
switch(e.key) {
case config.hotkey.prev:
case config.hotkey.prevAlt:
e.preventDefault();
e.stopPropagation();
e.stopImmediatePropagation();
clickPrev();
handled = true;
break;
case config.hotkey.next:
case config.hotkey.nextAlt:
e.preventDefault();
e.stopPropagation();
e.stopImmediatePropagation();
clickNext();
handled = true;
break;
case config.hotkey.close:
e.preventDefault();
e.stopPropagation();
e.stopImmediatePropagation();
closeViewer();
handled = true;
break;
}
if (handled) {
e.preventDefault();
e.stopPropagation();
e.stopImmediatePropagation();
return false;
}
}
function handleGlobalKeyDown(e) {
if (!isImageViewerActive()) return;
const hotkeys = [
config.hotkey.prev,
config.hotkey.next,
config.hotkey.close,
config.hotkey.prevAlt,
config.hotkey.nextAlt
];
if (hotkeys.includes(e.key)) {
e.stopImmediatePropagation();
switch(e.key) {
case config.hotkey.prev:
case config.hotkey.prevAlt:
clickPrev();
break;
case config.hotkey.next:
case config.hotkey.nextAlt:
clickNext();
break;
case config.hotkey.close:
closeViewer();
break;
}
return false;
}
}
const observer = new MutationObserver((mutations) => {
mutations.forEach((mutation) => {
if (mutation.addedNodes.length) {
mutation.addedNodes.forEach((node) => {
if (node.id === 'imgzoom' || (node.querySelector && node.querySelector('#imgzoom'))) {
setTimeout(() => {
const viewer = document.getElementById('imgzoom');
if (viewer) {
addViewerKeyboardListener();
viewer.focus();
}
}, 150);
}
});
}
if (mutation.type === 'attributes') {
const target = mutation.target;
if (target.id === 'imgzoom' && mutation.attributeName === 'style') {
const viewer = document.getElementById('imgzoom');
if (viewer && viewer.style.display !== 'none') {
setTimeout(() => {
addViewerKeyboardListener();
viewer.focus();
}, 150);
}
}
}
});
});
observer.observe(document.body, {
childList: true,
subtree: true,
attributes: true,
attributeFilter: ['style', 'class']
});
document.addEventListener('keydown', handleGlobalKeyDown, true);
if (isImageViewerActive()) {
setTimeout(() => {
const viewer = document.getElementById('imgzoom');
if (viewer) {
addViewerKeyboardListener();
viewer.focus();
}
}, 500);
}
document.addEventListener('click', (e) => {
if (e.target && e.target.classList &&
(e.target.classList.contains('imgclose') ||
e.target.closest('.imgclose'))) {
const viewer = document.getElementById('imgzoom');
if (viewer && viewer.dataset.keyboardListenerAdded) {
viewer.removeEventListener('keydown', handleViewerKeyDown, true);
delete viewer.dataset.keyboardListenerAdded;
}
}
}, true);
})();
快捷切换图片还是挺实用的惹,浏览变得更方便了{:6_169:} 喜欢查看小图的坛友应该更能用到这个脚本了 https://img.gamemale.com/album/202512/21/025159lywkirfumgftwuww.jpeg打上这个泥潭的看图时无法切图的缺点就解决了惹,正在利用脚本飞速进化{:6_200:} 好耶,方便的脚本又加了一个=3=~
这下可以更开心地逛泥潭了 这个看图真的好方便的说,不用一张张点了:$ 能用键盘控制很方便了,工作一整天用鼠标已经很累了 也是能节省很多时间惹,不用再再次点击图片了{:6_200:} 擦,之前都没注意过原来discuz的图片浏览不带左右箭头的啊:L 很棒的脚本诶,小图点开看总觉得有点麻烦,这样一看就方便多了:$ 0-0 快捷切换图片嘛~感觉这样对咸鱼方便好多呀~ 挺方便的欸~省去退出再点击下一张的步骤了 帖子里面的图片太多的时候很需要了 这个脚本太方便了!键盘党狂喜!真的不喜欢一直搓触摸板惹 (╯▽╰ ) 这个真的很实用诶 不用来回点开图片了 图片太多的时候确实很需要这种脚本 这种脚本对于看图多的帖子真是方便很多了啊 这个脚本很实用,看图更方便了,感谢楼主 相当实用的脚本呢,无论是操作还是观赏性都得到了极大的提升呢 这下切换图片变得方便多了,感谢楼主的制作与分享
页:
[1]
2