Kemer Enhance

美化介面與操作增強,增加額外功能,提供更好的使用體驗

< Feedback on Kemer Enhance

Review: Good - script works

§
Posted: 2025-11-11
Edited: 2025-11-11

你好,当我把鼠标移到这里的时候,就冒出了这个。
我把该插件关闭后就没有问题。希望能修复,谢谢

§
Posted: 2025-11-11

你好,当我把鼠标移到这里的时候,就冒出了这个。
我把该插件关闭后就没有问题。希望能修复,谢谢




§
Posted: 2025-11-11

我重新安装后变好了,因为我之前想要关闭修復名稱|自訂名稱
就删除了一些代码,看不懂但是看起来像是修復名稱|自訂名稱的代码
const getPixivName = async id => {
const response = await fixRequest(`https://www.pixiv.net/ajax/user/${id}?full=1&lang=ja`, {
referer: "https://www.pixiv.net/"
});
if (response.status === 200) {
const user = response.response;
let user_name = user.body.name;
user_name = user_name.replace(/(c\d+)?([日月火水木金土]曜日?|[123123一二三]日目?)[東南西北]..?\d+\w?/i, "");
user_name = user_name.replace(/[@@]?(fanbox|fantia|skeb|ファンボ|リクエスト|お?仕事|新刊|単行本|同人誌)+(.*(更新|募集|公開|開設|開始|発売|販売|委託|休止|停止)+中?[!!]?$|$)/gi, "");
user_name = user_name.replace(/\(\)|()|「」|【】|[@@__]+$/g, "").trim();
return user_name;
} else return;
};
const getCandfansName = async id => {
const response = await fixRequest(`https://candfans.jp/api/contents/get-timeline?user_id=${id}&record=1`);
if (response.status === 200) {
const user = response.response.data[0];
const user_code = user?.user_code || "";
const username = user?.username || "";
return [user_code, username];
} else return;
};
const candfansPageAdapt = (oldId, newId, oldUrl, oldName, newName) => {
if (Page.isSearch()) {
oldId = newId || oldId;
} else {
oldUrl = newId ? replaceUrlTail(oldUrl, newId) : oldUrl;
}
oldName = newName || oldName;
return [oldId, oldUrl, oldName];
};
const supportFixName = new Set(["pixiv", "fanbox", "candfans"]);
const supportFixTag = {
ID: /Gumroad|Patreon|Fantia|Pixiv|Fanbox|CandFans/gi,
NAME: /Twitter|Boosty|OnlyFans|Fansly|SubscribeStar|DLsite/gi,
Fantia: "https://fantia.jp/fanclubs/{id}/posts",
FantiaPost: "https://fantia.jp/posts/{id}",
Patreon: "https://www.patreon.com/user?u={id}",
PatreonPost: "https://www.patreon.com/posts/{id}",
DLsite: "https://www.dlsite.com/maniax/circle/profile/=/maker_id/{name}.html",
DLsitePost: "https://www.dlsite.com/maniax/work/=/product_id/{name}.html",
CandFans: "https://candfans.jp/{id}",
CandFansPost: "https://candfans.jp/posts/comment/show/{id}",
Gumroad: "https://gumroad.com/{id}",
Pixiv: "https://www.pixiv.net/users/{id}/artworks",
Fanbox: "https://www.pixiv.net/fanbox/creator/{id}",
Boosty: "https://boosty.to/{name}",
SubscribeStar: "https://subscribestar.adult/{name}",
Twitter: "https://x.com/{name}",
OnlyFans: "https://onlyfans.com/{name}",
Fansly: "https://fansly.com/{name}/posts"
};
async function fixUpdateUi(mainUrl, otherUrl, user, nameEl, tagEl, showText, appendTag) {
nameEl.$sAttr("style", "display: none;");
if (nameEl.previousElementSibling?.tagName !== "FIX_WRAPPER") {
nameEl.$iAdjacent(`

${showText.trim()}
Edit

`, "beforebegin");
}
const [tag_text, support_id, support_name] = [tagEl.$text(), supportFixTag.ID, supportFixTag.NAME];
if (!tag_text) return;
const [mark, matchId] = support_id.test(tag_text) ? ["{id}", support_id] : support_name.test(tag_text) ? ["{name}", support_name] : ["", null];
if (!mark) return;
tagEl.$iHtml(tag_text.replace(matchId, tag => {
let supported = false;
const supportFormat = appendTag ? (supported = supportFixTag[`${tag}${appendTag}`],
supported ? (user = parseUrlInfo(otherUrl).user, supported) : supportFixTag[tag]) : supportFixTag[tag];
return `${tag}`;
}));
}
async function fixTrigger(data) {
let {
mainUrl,
otherUrl,
server,
user,
nameEl,
tagEl,
appendTag
} = data;
let recordName = recordCache?.get(user);
if (recordName) {
if (server === "candfans") {
[user, mainUrl, recordName] = candfansPageAdapt(user, recordName[0], mainUrl, nameEl.$text(), recordName[1]);
}
fixUpdateUi(mainUrl, otherUrl, user, nameEl, tagEl, recordName, appendTag);
} else {
if (supportFixName.has(server)) {
if (server === "candfans") {
const [user_code, username] = await getCandfansName(user) ?? nameEl.$text();
if (user_code && username) fixCache.set(user, [user_code, username]);
[user, mainUrl, recordName] = candfansPageAdapt(user, user_code, mainUrl, nameEl.$text(), username);
fixUpdateUi(mainUrl, otherUrl, user, nameEl, tagEl, username, appendTag);
} else {
const username = await getPixivName(user) ?? nameEl.$text();
fixUpdateUi(mainUrl, otherUrl, user, nameEl, tagEl, username, appendTag);
fixCache.set(user, username);
}
saveWork();
} else {
fixUpdateUi(mainUrl, otherUrl, user, nameEl, tagEl, nameEl.$text(), appendTag);
}
}
}

§
Posted: 2025-11-11

对我来说只需要预览内容就行了,修復名稱|自訂名稱不需要但是这些都是绑定的,就出此下策了

Canaan HSAuthor
§
Posted: 2025-11-11
Edited: 2025-11-11

嗯 這種頁面怎麼會跑出這個, 你能給我網址嘛, 可能網站又更新了什麼我沒注意到

§
Posted: 2025-11-12

https://kemono.cr/patreon/user/131911829/post/124599870#168217808
https://kemono.cr/patreon/user/18267020/post/138995926
好的,是这样的
我经过反复查找,再现这个问题,找到了
previewAbove: --, // 快速預覽展示於帖子上方
在true时,移动鼠标时而手形时而I形光标,但Not Supported没有冒出来
在false时,移动鼠标时出现手形时,Not Supported冒出来了
(小小的请求,希望能把修復名稱|自訂名稱和快速預覽內容分开一下,网页加载时有点卡,十分感谢)

§
Posted: 2025-11-12
Edited: 2025-11-12

另外,不知道是不是有一定的规律
我找到的问题好像是下面有评论时出现的
也不确定,可以当作参考

Canaan HSAuthor
§
Posted: 2025-11-12

OK 我測試看看

Canaan HSAuthor
§
Posted: 2025-11-12

我沒有復現出你說的問題,不過我還是改了一下判斷,你再測試看看吧

§
Posted: 2025-11-12

我沒有復現出你說的問題,不過我還是改了一下判斷,你再測試看看吧

https://kemono.cr/patreon/user/131911829/post/124599870#168217881
Espeon’s heat keeps him needy all the time. More friends come to play and he is ready to continue his training!
移动到peon’s heat k时出现这个

§
Posted: 2025-11-12

然后长按这个手形光标时,跳动到下面评论区了

§
Posted: 2025-11-12

设置成 previewAbove: false, // 快速預覽展示於帖子上方
就能跑出这个了

Canaan HSAuthor
§
Posted: 2025-11-12

是的我沒辦法觸發你所說的狀況, 你已經更新到最新版本了嘛?

這個懸浮觸發是不可能對文字起反應的, 我推測可能是你裝的其他腳本造成的意外

§
Posted: 2025-11-12

是的我沒辦法觸發你所說的狀況, 你已經更新到最新版本了嘛?

這個懸浮觸發是不可能對文字起反應的, 我推測可能是你裝的其他腳本造成的意外

是吗?如果你没出问题的话,那就不弄了。
以及十分感谢把修復名稱|自訂名稱和快速預覽內容分开了。点赞👍

Canaan HSAuthor
§
Posted: 2025-11-12
Edited: 2025-11-12

如果你看的懂代碼,觀看觸發的判斷邏輯,你就知道為什麼我說不可能了,我改成根據對象類名判斷的,先前是判斷對象類型,理論上這兩種都不會因為你懸浮於這些文本上而觸發,這些文本根本無法達到這些條件

監聽器的開頭

Lib.onEvent(Lib.body, "mouseover", Lib.$debounce(event => {

Post reply

Sign in to post a reply.