️ 小尾巴保护 (oulin_tail)

️ 小尾巴保护 (oulin_tail)

为 XIUNOX BBS 提供复制保护功能。当用户在帖子详情页复制文本时,自动在剪贴板末尾追加帖子标题、链接和时间信息,并弹出确认提示。

功能介绍

复制追加
用户在帖子详情页复制文本时,自动在剪贴板末尾追加:

  • 站点名称 — 论坛名称

  • 帖子标题 — 当前帖子主题

  • 完整链接 — 含域名的绝对 URL

  • 当前时间 — 精确到秒

弹窗确认
复制成功后页面顶部弹出 Bootstrap 5 Toast 提示,告知用户已追加信息。弹窗可独立开启/关闭。

模板自定义
支持 4 个变量自由组合:

变量

说明

示例

{site_name}

站点名称

我的论坛

{title}

帖子标题

欢迎使用 XIUNOX

{url}

完整链接(含域名)

https://bbs.example.com/thread-123

{time}

当前时间

2025-01-15 14:30:25

发帖页自动禁用
发帖页(发新帖/回复编辑)自动跳过尾巴追加,方便用户复制素材编辑帖子,不影响帖子详情页功能。

代码框复制支持
拦截代码框"复制代码"按钮的 clipboard.writeText API,确保代码复制也能追加尾巴信息。

安装方法

方式一:后台安装

  1. oulin_tail 目录上传到 plugin/

  2. 后台 → 插件管理 → 找到「小尾巴保护」→ 点击「安装」

  3. 安装完成后点击「启用」

方式二:手动安装

  1. oulin_tail 目录上传到 plugin/

  2. 后台 → 插件管理 → 点击「扫描插件」

  3. 找到「小尾巴保护」→ 点击「安装」→「启用」

使用配置

基本设置

  1. 后台 → 插件管理 → 找到「小尾巴保护」→ 点击「设置」

  2. 勾选「启用小尾巴保护」

  3. 点击保存

自定义模板
在设置页的「追加内容模板」文本框中,使用变量组合你想要的格式:

示例 1(默认):

复制自:{site_name} {title}
链接:{url}
时间:{time}

示例 2(简洁版):

—— 转自{site_name}《{title}》
{url}

示例 3(版权声明):

以上内容来源于{site_name}
原文:{title}
链接:{url}
复制时间:{time}
转载请注明出处

弹窗设置

  • 弹窗提示:开启/关闭复制成功后的 Toast 弹窗

  • 弹窗提示文案:自定义弹窗显示的文字

使用示例

前台效果
用户在帖子详情页选中并复制一段文字后,剪贴板内容:

XIUNOX BBS 是一款现代化的社区论坛系统...

复制自:我的论坛 XIUNOX BBS 欢迎使用
链接:https://bbs.example.com/thread-123
时间:2025-01-15 14:30:25

同时页面顶部弹出 Toast 提示:

已为您追加帖子信息并复制

不同页面行为

页面类型

复制行为

帖子详情页

追加尾巴 + 弹窗提示

发帖页(发新帖)

不追加

发帖页(回复)

不追加

代码框复制

追加尾巴 + 弹窗提示

卸载

  1. 后台 → 插件管理 → 找到「小尾巴保护」

  2. 点击「卸载」→ 确认

  3. 卸载后所有配置自动清除

常见问题

Q: 为什么发帖页不追加?
A: 这是正常设计。发帖时用户需要复制素材编辑帖子,如果追加尾巴会影响内容编辑。帖子详情页正常追加。

Q: 如何修改追加的链接为完整 URL?
A: v1.0.2 起已自动使用完整绝对 URL(含域名),无需额外配置。

Q: 弹窗提示可以关闭吗?
A: 可以。在插件设置页取消勾选「弹窗提示」即可,关闭后复制仍追加尾巴但不弹窗。

Q: 代码框复制为什么不追加?
A: v1.0.3 起已修复。代码框的"复制代码"按钮使用 clipboard.writeText API,插件已拦截该 API 实现追加。

Q: 支持移动端吗?
A: 支持。纯原生 JavaScript 实现,兼容移动端浏览器。

文件结构

plugin/oulin_tail/
├── conf.json                    # 插件元数据、hooks_rank
├── icon.png                     # 插件图标(64x64)
├── install.php                  # 默认配置写入
├── uninstall.php                # 配置清理
├── setting.php                  # 后台设置控制器
├── readme.md                    # 使用说明
├── model/
│   └── TailService.php          # 业务逻辑类
├── hook/
│   ├── model_inc_file.php       # 注册 Service 类加载路径
│   ├── footer_js_after.htm      # 帖子页底部注入 JS
│   └── lang_zh_cn_bbs.php       # 翻译键定义
├── view/htm/
│   └── setting.htm              # 后台设置页面
└── static/
    └── js/tail.js               # 前端脚本(copy 事件监听 + Toast 提示)

技术实现

  • 原生 JavaScript 监听 copy 事件,零 jQuery 依赖

  • 通过 clipboardData.setData('text/plain', ...) 拦截并修改剪贴板内容

  • 拦截 navigator.clipboard.writeText API,支持代码框复制场景

  • 通过 hook/footer_js_after.htm 仅在帖子详情页注入脚本

  • URL 检测自动识别发帖页,跳过尾巴追加

  • 后台未启用时不加载任何前端资源,零性能损耗

  • 遵循 Xiuno X 插件开发规范(CSRF 防护、权限检查、输出转义)

许可证

GPL v2

版本:v1.0.5
适用版本:XIUNOX BBS 1.0+
作者:oulin

oulin_tail_a7RRw.tar.gz 9.3KB
最新回复
  • AI Lv1

    感谢欧琳分享「小尾巴保护」插件。该插件利用原生 JS 拦截 copy 事件和 clipboard.writeText,实现内容版权保护,设计思路清晰且符合现代浏览器安全规范。

    几点补充建议:

    1. 权限边界:部分浏览器(如 Safari)或访客模式可能限制剪贴板写入,建议在前端增加 try-catch 兼容处理,避免静默失败。
    2. 用户体验:若用户未启用弹窗提示,建议在设置页默认开启“仅追加不弹窗”的静默模式,减少打扰。
    3. 安全性:确保 {title}{url} 在注入前经过 htmlspecialchars 转义,防止 XSS 攻击。

    欢迎提交 PR 或反馈测试中的兼容性问题。【以上由 AI 自动回复,仅供参考】

    7天前
  • 顶起来
    6天前

请先登录后再回复 登录

uid:38 Lv2
关注
发帖 19
评论 55
粉丝 1
关注 0
发新帖
目录
️ 小尾巴保护 (oulin_tail)