代码规范
如果不懂代码也没关系,下方模板库有完整的代码可以直接复制哦!
ID类名和结构
Section titled “ID类名和结构”消息内容区域
Section titled “消息内容区域”| 名称 | 定位 |
|---|---|
| 开场设置容器 | .chat_opening_container |
| 开场介绍 | .roleIntro |
| 开场内容设置容器 | .scene_content |
| 聊天内容容器 | .chat_content_container |
| 聊天气泡头像容器 | .chat_avatar_container |
| 聊天气泡容器 | .chat_bubble_container |
| 聊天气泡内部容器 | .chat_bubble_inner_container |
| 聊天角色回复气泡容器 | .chat_reply_bubble |
| 聊天自己发送气泡容器 | .chat_my_bubble |
| 聊天角色回复文本角色说的话 | .chat_reply_dialogue_text |
| 聊天角色回复文本心里活动 | .chat_reply_thought_text |
| 聊天角色回复文本动作 | .chat_reply_action_text |
| 聊天最新回复消息更多操作容器 | .chat_actions_container |
| 更多按钮容器 | .chat_more_button |
| 重说按钮容器 | .chat_retry_btn |
| 踩按钮容器 | .chat_dislike_btn |
| 名称 | 定位 |
|---|---|
| 整个聊天页面容器 | #chat_page_container |
| 聊天页日间模式容器 | .chat_dayMode |
| 聊天页夜间模式容器 | .chat_nightMode |
| 聊天页日间模式背景颜色设置 | .chat_dayMode::after |
| 聊天页背景图设置 | #chat_page_container(background-image需要加 !important) |
顶部导航栏区域
Section titled “顶部导航栏区域”| 名称 | 定位 |
|---|---|
| 顶部栏容器 | #chat_header |
| 顶部栏左侧容器 | #chat_header_left |
| 顶部栏返回按钮 | #chat_header_left_icon |
| 顶部栏角色头像 | #chat_header_left_avatar |
| 顶部栏角色名字 | #chat_header_left_name |
| 顶部栏右侧容器 | #chat_header_right |
| 顶部栏日间/夜间模式切换按钮 | #chat_header_right_mode_toggle |
| 顶部栏分享按钮 | #chat_header_right_share |
| 顶部栏喜欢按钮容器 | #chat_header_right_favorited_btn |
| 顶部聊天提醒容器 | #chat_tips_title |
| 名称 | 定位 |
|---|---|
| 整个底部栏区域容器 | #chat_input_bar_container |
| 底部区域栏内部容器 | #chat_input_bar_inner |
| 底部切换语音图标容器 | #chat_input_bar_voice_btn |
| 底部语音模式图标按钮 | .voice_btn(默认夜间模式颜色) |
| 底部语音图标按钮日间模式 | .voice_day_btn |
| 底部文字输入框容器 | #chat_input_bar_text_container |
| 底部文字输入框 | #chat_input_bar_text_input |
| 底部文字输入框智能提示按钮容器 | #chat_input_bar_smart_container |
| 底部文字输入框智能提示按钮 | .smart_btn |
| 底部文字输入框智能提示按钮高亮 | .smart_light_btn |
| 底部语音模式容器 | #chat_input_bar_voice_container |
| 底部输入模式图标容器 | #chat_input_bar_input_btn |
| 底部输入模式图标按钮 | .input_btn(默认夜间模式) |
| 底部输入模式图标按钮日间 | .input_day_btn |
| 底部录音按钮 | #chat_input_bar_voice_speek_btn |
| 底部发送按钮容器 | #chat_input_bar_send_btn |
| 底部发送按钮 | .send_btn(默认夜间模式) |
| 底部发送按钮日间模式 | .send_day_btn |
| 底部更多按钮容器 | #chat_input_bar_features_btn |
| 底部更多按钮 | .features_btn |
| 底部更多按钮日间模式 | .features_day_btn |
美化禁用列表
Section titled “美化禁用列表”在创作流程中,我们会对部分字段做安全过滤/审查。
禁用内容清单:
- 行内事件属性:所有
on*(如onclick、onload、onerror、oninput、onscroll等) - script 标签:
<script>...</script>会被移除 - 危险链接协议:
href="javascript:..."href="data:..."(data:image场景会更宽松,但仍建议避免)
- 外链脚本:
<script src="...">会被移除 - 高风险容器标签:
iframe、object、embed、applet、meta(会被移除)
✅ 推荐写法:
- 只写纯文本或简单结构化 HTML(
<div>、<p>、<span>、<br>等) - 避免在开场设计里实现交互(点击/跳转/请求),交互应放在叙引模板里,并遵守叙引 JS 规则
🚫 HTML(DOM)违规清单:
- 行内事件属性:任何
on*(如onclick)都会被移除 - 危险协议:
href="javascript:..."href="data:..."(除图片data:image外仍建议避免)
- 危险标签:
iframe、object、embed、applet、meta - script[src]:任何外链脚本都会被移除并提示违规
无需编写外层
\“````包裹标识,直接写入内部内容即可。
📜 JS(script)违规清单:
禁止出现以下能力/关键字(命中后该 <script> 会被丢弃):
parent.(例如window.parent、parent.xxx)- ✅ 允许
parentElement、parentNode - ⚠️ 不要把变量命名为
parent再写parent.xxx,会误触规则
- ✅ 允许
eval(Function((仅构造函数;不影响function () {}声明)setTimeout('...')、setInterval('...')(字符串形式执行)document.cookielocalStorage、sessionStorageindexedDBXMLHttpRequestfetch(WebSocketwindow.open(top.location=import((动态导入)
🎨 全局美化违规清单
Section titled “🎨 全局美化违规清单”- 禁止的 CSS 特性:
@import、@font-face、expression(...)、javascript:、content属性值只允许纯文本/空字符串(禁止 html 标签和 url) - 选择器收敛:
html、body、*、:root及后代选择器(如body .xxx)会被替换为作用域容器 - 规模限制:总字符数 ≤ 40000,规则数(按
{计数)≤ 500
📝 纯文本场景违规清单
Section titled “📝 纯文本场景违规清单”- 包含不可见控制字符、方向控制符
- 包含
<或>(会被剔除)
常见问题汇总
Section titled “常见问题汇总”1. 为什么预览能显示但交互失效?
Section titled “1. 为什么预览能显示但交互失效?”通常原因:
- 使用了 onclick=”…” 等行内事件属性,被 DOM 清洗移除
- script 因命中禁用关键字被丢弃(提交提示会列出片段)
2. 为什么提交时报”模板不安全”?
Section titled “2. 为什么提交时报”模板不安全”?”提交时会做脚本审查与 DOM 清洗,常见触发点:
- 脚本出现
parent.fetchXMLHttpRequestevalFunction等 - HTML 里出现
onclickjavascript:script[src]等
3. 叙引中怎样引入音视频?
Section titled “3. 叙引中怎样引入音视频?”标签格式:
- 视频:
<video src="资源链接" controls width="640" height="360" autoplay loop muted preload="auto" poster="封面链接"></video> - 音频:
<audio src="资源链接" controls autoplay loop muted preload="auto"></audio>
属性说明:
- autoplay:自动播放|muted:静音
- loop:循环播放|preload:预加载
- poster:视频封面|controls:显示控制面板
播放异常排查:
- src 仅填可访问的线上 https 链接,禁用本地路径
- 无法播放先单独打开链接校验资源有效性
- 自动播放建议搭配 muted 规避浏览器限制