Skip to content

Commit be1e07b

Browse files
committed
Update Picviewer CE+.user.js
1 parent 14c3308 commit be1e07b

File tree

1 file changed

+64
-12
lines changed

1 file changed

+64
-12
lines changed

Picviewer CE+/Picviewer CE+.user.js

Lines changed: 64 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
// @description:ja 画像を強力に閲覧できるツール。ポップアップ表示、拡大・縮小、回転、一括保存などの機能を自動で実行できます
1313
// @description:pt-BR Poderosa ferramenta de visualização de imagens on-line, que pode pop-up/dimensionar/girar/salvar em lote imagens automaticamente
1414
// @description:ru Мощный онлайн-инструмент для просмотра изображений, который может автоматически отображать/масштабировать/вращать/пакетно сохранять изображения
15-
// @version 2026.1.17.1
15+
// @version 2026.1.23.1
1616
// @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAAV1BMVEUAAAD////29vbKysoqKioiIiKysrKhoaGTk5N9fX3z8/Pv7+/r6+vk5OTb29vOzs6Ojo5UVFQzMzMZGRkREREMDAy4uLisrKylpaV4eHhkZGRPT08/Pz/IfxjQAAAAgklEQVQoz53RRw7DIBBAUb5pxr2m3/+ckfDImwyJlL9DDzQgDIUMRu1vWOxTBdeM+onApENF0qHjpkOk2VTwLVEF40Kbfj1wK8AVu2pQA1aBBYDHJ1wy9Cf4cXD5chzNAvsAnc8TjoLAhIzsBao9w1rlVTIvkOYMd9nm6xPi168t9AYkbANdajpjcwAAAABJRU5ErkJggg==
1717
// @namespace https://github.com/hoothin/UserScripts
1818
// @homepage https://pv.hoothin.com/
@@ -47,7 +47,7 @@
4747
// @grant unsafeWindow
4848
// @require https://update.greasyfork.org/scripts/6158/23710/GM_config%20CN.js
4949
// @require https://update.greasyfork.org/scripts/438080/1738227/pvcep_rules.js
50-
// @require https://update.greasyfork.org/scripts/440698/1733533/pvcep_lang.js
50+
// @require https://update.greasyfork.org/scripts/440698/1740314/pvcep_lang.js
5151
// @match *://*/*
5252
// @exclude http://www.toodledo.com/tasks/*
5353
// @exclude http*://maps.google.com*/*
@@ -28254,6 +28254,30 @@ ImgOps | https://imgops.com/#b#`;
2825428254
document.head.removeChild(hideIconStyle);
2825528255
}
2825628256
});
28257+
function buildDisableKeyPattern() {
28258+
let originPattern = location.origin.replace(/^https?/, "https?").replace(/\./g, "\\.");
28259+
let pathBase = location.pathname.replace(/[^\/]*$/, "");
28260+
return "^" + originPattern + pathBase;
28261+
}
28262+
function isDisableKeyPatternMatched() {
28263+
let pattern = buildDisableKeyPattern();
28264+
let list = normalizeDisableKeySites(prefs.floatBar.disableKeySites);
28265+
return list.indexOf(pattern) !== -1;
28266+
}
28267+
_GM_registerMenuCommand(
28268+
isDisableKeyPatternMatched() ? i18n("restoreKeyForHost") : i18n("disableKeyForHost"),
28269+
() => {
28270+
let pattern = buildDisableKeyPattern();
28271+
let list = normalizeDisableKeySites(prefs.floatBar.disableKeySites);
28272+
if (list.indexOf(pattern) === -1) {
28273+
list.unshift(pattern);
28274+
saveDisableKeySites(list);
28275+
} else {
28276+
let nextList = list.filter(item => item !== pattern);
28277+
saveDisableKeySites(nextList);
28278+
}
28279+
}
28280+
);
2825728281
_GM_registerMenuCommand(i18n("ruleRequest"), () => {
2825828282
_GM_openInTab("https://github.com/hoothin/UserScripts/issues/new?labels=Picviewer%20CE%2B&template=custom-rule-request.md&title=Request%20Picviewer%20CE%2B%20support%20for%20" + location.hostname, {active:true});
2825928283
});
@@ -28346,19 +28370,47 @@ ImgOps | https://imgops.com/#b#`;
2834628370
}
2834728371

2834828372
// 注册按键
28349-
let disableKey = false;
28350-
if (prefs.floatBar.disableKeySites) {
28351-
let sitesArr = prefs.floatBar.disableKeySites.split("\n");
28352-
for(let s = 0; s < sitesArr.length; s++) {
28353-
let siteReg = sitesArr[s].trim();
28354-
if (new RegExp(siteReg).test(_URL)) {
28355-
disableKey = true;
28356-
break;
28373+
function normalizeDisableKeySites(value) {
28374+
if (!value) return [];
28375+
return value.split("\n").map(s => s.trim()).filter(Boolean);
28376+
}
28377+
28378+
function isKeyDisabledForUrl(url, host, list) {
28379+
for (let i = 0; i < list.length; i++) {
28380+
let siteReg = list[i];
28381+
try {
28382+
let reg = new RegExp(siteReg);
28383+
if (reg.test(url) || reg.test(host)) return true;
28384+
} catch (e) {
2835728385
}
2835828386
}
28387+
return false;
2835928388
}
28360-
if (!disableKey) {
28361-
document.addEventListener('keydown', keydown, true);
28389+
28390+
let keydownBound = false;
28391+
function updateKeydownListener() {
28392+
let list = normalizeDisableKeySites(prefs.floatBar.disableKeySites);
28393+
let disableKey = isKeyDisabledForUrl(_URL, location.hostname, list);
28394+
if (!disableKey && !keydownBound) {
28395+
document.addEventListener('keydown', keydown, true);
28396+
keydownBound = true;
28397+
} else if (disableKey && keydownBound) {
28398+
document.removeEventListener('keydown', keydown, true);
28399+
keydownBound = false;
28400+
}
28401+
}
28402+
updateKeydownListener();
28403+
28404+
function saveDisableKeySites(list) {
28405+
let value = list.join("\n");
28406+
prefs.floatBar.disableKeySites = value;
28407+
if (GM_config && GM_config.set) {
28408+
GM_config.set('floatBar.disableKeySites', value);
28409+
let field = GM_config.fields && GM_config.fields['floatBar.disableKeySites'];
28410+
if (field && field.node) field.node.value = value;
28411+
GM_config.save();
28412+
}
28413+
updateKeydownListener();
2836228414
}
2836328415

2836428416
let canImport = false;

0 commit comments

Comments
 (0)