diff --git a/assets/js/aksrt-runtime.js b/assets/js/aksrt-runtime.js index 4cf2ba7d..1e85fb60 100644 --- a/assets/js/aksrt-runtime.js +++ b/assets/js/aksrt-runtime.js @@ -270,15 +270,32 @@ }, true); // ══════════════════════════════════════════════════════════════ - // §10.10a — 解绑 vendor main.min.js 的 ajax 委托 + // §10.10a — 拦截 vendor 评论脚本 & 解绑 vendor ajax 委托 // ══════════════════════════════════════════════════════════════ - // main.min.js(loader.js 异步加载)在 body 上挂了 zib_ajax 系点击委托: - // [data-action] / [ajax-action] / .wp-ajax-submit / .initiate-checkin / .oauth-untying - // 它们向 admin-ajax 发 zibll 的 action(comment_like、like、follow_user…), - // AKSRT 没有这些处理器 → WP 返回 400 "0"(控制台「ajax请求错误」), - // 且与下方 §10.11 自有处理重复。vendor 运行时只保留 UI 行为,ajax 委托统一摘除。 - // main.min.js 异步加载,.off 需在其绑定后执行——幂等重试覆盖加载窗口。 + // vendor 链路:loader.js(tbquire,改造版 RequireJS)→ main.min.js 检测到 + // #commentform/#postcomments 即 tbquire(["comment"]) 懒加载 comment.min.js。 + // AKSRT 自有评论脚本(comments/comment-tools/comment-fixed-input/ + // comment-move-form/comment-ajax)已承担全部行为,vendor comment.min.js 的 + // 7 条 body 委托会双路触发(提交 zib_ajax action=submit_comment 无处理器, + // 即控制台「ajax请求错误」400 "0" 的来源;回复/排序/分页同理)。 + // + // 双层防御: + // 1) tbfine 预注册空 'comment' 模块 → tbquire 不再下载 comment.min.js; + // 2) 若模块抢在注册前加载,退化为对 7 条委托做幂等 .off。 + function stubVendorCommentModule() { + if (!(window.tbfine && window.tbquire && window.tbquire.defined)) return false; + try { + if (window.tbquire.defined('comment')) return true; + window.tbfine('comment', [], function () { return {}; }); + return true; + } catch (e) { + return false; + } + } + + // main.min.js 的 body 级 zib_ajax 委托同理摘除(vendor 只保留 UI 行为)。 function unbindVendorAjaxDelegates() { + stubVendorCommentModule(); if (!window.jQuery) return; try { var $body = jQuery('body'); @@ -287,6 +304,14 @@ $body.off('click', '.wp-ajax-submit,[zibajax="submit"]'); $body.off('click', '.initiate-checkin'); $body.off('click', '.oauth-untying'); + // comment.min.js 的 7 条委托(zibll/js/comment.js 原始选择器) + $body.off('click', '[fixed-input]'); + $body.off('click', '.commentlist .pagenav a,.comment-orderby'); + $body.off('click', '.comment-edit-link,.comment-reply-link'); + $body.off('keydown', '#comment'); + $body.off('click', '.comment-trash-link'); + $body.off('click', '.comment-approve-link'); + $body.off('click', '#commentform #submit'); } catch (e) { /* vendor 运行时未就绪时忽略 */ } } var unbindVendorAjaxLoop = function () {