重要改进,内核会给插件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
主楼