diff --git a/assets/js/aksrt-runtime.js b/assets/js/aksrt-runtime.js index c60a1f6f..4cf2ba7d 100644 --- a/assets/js/aksrt-runtime.js +++ b/assets/js/aksrt-runtime.js @@ -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 // ══════════════════════════════════════════════════════════════