fix(frontend): 解绑 vendor main.min.js 的 body 级 ajax 委托,根除 admin-ajax 400 "0"

main.min.js 在 body 上委托 [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请求错误」的来源;评论点赞(data-action=comment_like)、文章
点赞/收藏(data-action=like|favorite)、VIP 购买等均会触发,且与 §10.11 自有
处理重复。main.min.js 由 loader.js 异步加载,解绑以幂等 .off 每 200ms
重试至多 50 次覆盖加载窗口。vendor 运行时仅保留 UI 行为。
This commit is contained in:
2026-08-22 13:46:06 +08:00
parent 8d4f07656a
commit d35f0b6730
+28
View File
@@ -269,6 +269,34 @@
});
}, true);
// ══════════════════════════════════════════════════════════════
// §10.10a — 解绑 vendor main.min.js 的 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 需在其绑定后执行——幂等重试覆盖加载窗口。
function unbindVendorAjaxDelegates() {
if (!window.jQuery) return;
try {
var $body = jQuery('body');
$body.off('click', '[data-action]');
$body.off('click', '[ajax-action]');
$body.off('click', '.wp-ajax-submit,[zibajax="submit"]');
$body.off('click', '.initiate-checkin');
$body.off('click', '.oauth-untying');
} catch (e) { /* vendor 运行时未就绪时忽略 */ }
}
var unbindVendorAjaxLoop = function () {
unbindVendorAjaxDelegates();
if (++unbindVendorAjaxLoop.tries >= 50) return; // ~10s @200ms 覆盖异步加载窗口
setTimeout(unbindVendorAjaxLoop, 200);
};
unbindVendorAjaxLoop.tries = 0;
unbindVendorAjaxLoop();
// ══════════════════════════════════════════════════════════════
// §10.11 — [data-action] / [ajax-action] universal buttons
// ══════════════════════════════════════════════════════════════