fix(comments): 拦截 vendor comment.min.js 懒加载并解绑其 7 条委托
栈追踪确认 400 "0" 的调用方是 zibll comment.min.js(main.min.js 检测到
#commentform/#postcomments 后 tbquire(["comment"]) 自动懒加载),其
#commentform #submit 绑定 zib_ajax(action=submit_comment) 无处理器,
回复/排序/分页/删除等绑定也与 AKSRT 自有评论脚本双路触发。
双层处理:
1) tbfine 预注册空 'comment' AMD 模块,tbquire 不再下载 comment.min.js
2) 若模块抢在注册前加载,对 comment.js 的 7 条 body 委托做幂等 .off
([fixed-input] / pagenav+orderby / reply+edit / #comment keydown /
trash / approve / #submit)
This commit is contained in:
@@ -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 () {
|
||||
|
||||
Reference in New Issue
Block a user