重要改进,内核会给插件js统一使用立即执行函数 (IIFE) + try-catch
(function(){ try { // 代码 } catch(e) { // 捕获异常 } })();IIFE 用来隔离变量,try-catch 用来兜底抓错;合起来就是:插件js均视为私有代码,出错也不炸全局。
新增前端公共 API
核心在 index.js 中通过 window.bbs1 暴露一组公共函数,供插件 JavaScript 调用。核心脚本先于插件脚本执行,因此这些函数在插件代码运行时一定可用。调用前请判断存在性,便于核心版本回退时优雅降级:window.bbs1?.showToast('已保存'); 函数 签名 说明 showToast showToast(message) 右下角轻提示,约 1.8 秒后自动消失。页面缺少 #toast 时静默忽略。 openModal openModal(title, html) 打开通用弹层,html 作为内容插入。页面缺少弹层节点时静默忽略。 closeModal closeModal() 关闭弹层并清空内容;若弹层正等待 openConfirm / openPrompt,该 Promise 以取消值结束。 openConfirm openConfirm(message, title = '确认操作') 返回 Promise:确定得到 true,取消或关闭得到 false。 openPrompt openPrompt(message, title = '请输入', value = '1') 返回 Promise:确定得到去掉首尾空白的输入字符串,取消得到 null。 openNotify openNotify(url) 按核心的私信弹层流程请求 url 并展示。 formActionUrl formActionUrl(form) 取表单提交地址,缺失时回退到当前页面地址。 markButtonPending markButtonPending(button) 给按钮加提交中状态;页面恢复(pageshow)时由核心统一清除。最后由 bbs1 编辑于 2026-10-11 17:58主楼赞!过几天升级
手指一点更新完毕,感觉良好!