fix(评论): 徽章排序兜底 —— 系统徽章(博主/小编)恒定排在最前
现象:普通用户的 badge_name 徽章(如「小编」)会排在
友链/友圈/官职之后,与「博主」的位置不一致(管理员路径下系统徽章
在 .atk-badge-wrap 里、会被提前,普通用户路径则可能被追加到末尾)。
修法:拆掉 .atk-badge-wrap 后做一次确定性重排,按
系统徽章 > 置顶 > 头衔 > 友链 > 友圈 > 官职 的优先级依序 append 回
昵称(DocumentFragment 移动保序)。不管 Artalk 把系统徽章渲染在哪
都会归位,以后新徽章只要补进 PRIO 数组即可。
本地验证:CDP 注入 fetch 拦截给小十的评论加 badge_name=小编,
完整复现截图场景 → 顺序 小编 友链 友圈 司户参军 ✅
This commit is contained in:
1 parent
c1f9a0c6f0
commit
6b8fba827b
1 file changed
+12
@@ -1302,6 +1302,18 @@ artalk.on('comment-rendered', function(node) {
|
||||
while (wrap.firstChild) wrapParent.insertBefore(wrap.firstChild, wrap);
|
||||
wrapParent.removeChild(wrap);
|
||||
}
|
||||
// 5.5) 统一排序兜底:不管 Artalk 把系统徽章渲染在哪、什么时候渲染,
|
||||
// 最终顺序强制为:系统徽章(博主/小编) > 置顶 > 头衔 > 友链 > 友圈 > 官职。
|
||||
// 实测:管理员的系统徽章在 .atk-badge-wrap 里、走上面的逻辑会排在最前;
|
||||
// 普通用户的 badge_name 徽章(小编)由 Artalk 稍后直接追加到昵称末尾,
|
||||
// 会排到友链/友圈/官职后面 —— 这里按优先级重排,两种路径都归位。
|
||||
var PRIO = ['.atk-badge', '.atk-pinned-badge', '.atk-title-badge', '.atk-link-badge', '.atk-feed-badge', '.atk-rank-badge'];
|
||||
var badgeFrag = document.createDocumentFragment();
|
||||
for (var pi = 0; pi < PRIO.length; pi++) {
|
||||
var priEls = nickEl.querySelectorAll(PRIO[pi]);
|
||||
for (var pei = 0; pei < priEls.length; pei++) badgeFrag.appendChild(priEls[pei]);
|
||||
}
|
||||
nickEl.appendChild(badgeFrag);
|
||||
// 6) 所有徽章挂同一个类,几何样式(尺寸/内边距/圆角/字重/对齐)只由
|
||||
// .atk-cmt-badge 一处定义,从此不会有"两种徽章尺寸不一致"的问题
|
||||
var allBadges = nickEl.querySelectorAll(
|
||||
|
||||
Reference in new issue
Block a user