LunaTalk 中文文档 下载 App

LunaTalk HTML 内联脚本——onclick 按钮交互详解

LunaTalk 的脚本限制

帮助文档明确说明:

写法支持吗
独立 <script>...</script> 块❌ 不支持
<button onclick="..."> 内联事件脚本✅ 支持
<a href="javascript:...">❌ 通常不支持
<div onmouseover="...">❌ 帮助文档未提及支持

所以只能用内联事件脚本,最常见就是按钮的 onclick。

按钮 onclick 的核心模板

帮助文档提供的标准模板,直接复制粘贴就能用:

<button onclick="const textarea=document.querySelector('#lunatalk-input textarea.uni-textarea-textarea');if(textarea){textarea.value='选项文本';textarea.dispatchEvent(new Event('input',{bubbles:true}))}else{alert('没找到 textarea 哦')}">按钮显示文字</button>

模板逐行拆解

代码作用
document.querySelector('#lunatalk-input textarea.uni-textarea-textarea')找到 LunaTalk 聊天输入框(固定选择器)
textarea.value='选项文本'把按钮里的选项文字填入输入框
textarea.dispatchEvent(new Event('input',{bubbles:true}))触发输入事件,让 LunaTalk 识别到输入变化
alert('没找到...')如果没找到输入框(比如在错误页面),弹个提示

你只需要改一处

把 textarea.value='选项文本' 里的 '选项文本' 替换成你想要玩家填入的实际内容。其他全部原样不动——不要改选择器、不要删 dispatchEvent、不要改结构。

多按钮示例

<button onclick="const ta=document.querySelector('#lunatalk-input textarea.uni-textarea-textarea');if(ta){ta.value=='修炼功法';ta.dispatchEvent(new Event('input',{bubbles:true}))}">修炼功法</button>
<button onclick="const ta=document.querySelector('#lunatalk-input textarea.uni-textarea-textarea');if(ta){ta.value=='下山历练';ta.dispatchEvent(new Event('input',{bubbles:true}))}">下山历练</button>
<button onclick="const ta=document.querySelector('#lunatalk-input textarea.uni-textarea-textarea');if(ta){ta.value=='在修炼室打坐';ta.dispatchEvent(new Event('input',{bubbles:true}))}">打坐休息</button>
<button onclick="const ta=document.querySelector('#lunatalk-input textarea.uni-textarea-textarea');if(ta){ta.value=='去找艾莉娅';ta.dispatchEvent(new Event('input',{bubbles:true}))}">去找艾莉娅</button>

按钮样式美化

简洁风格(LunaTalk 推荐)

<button style="background-color: lightblue; color: darkblue; border: none; padding: 8px 16px; border-radius: 4px; cursor: pointer;" onclick="...">按钮文字</button>

分组颜色区分(多类型选项)

<button style="background-color: #90EE90; color: darkgreen; border: none; padding: 6px 12px;" onclick="...">✓ 接受任务</button>
<button style="background-color: #FFB6C1; color: darkred; border: none; padding: 6px 12px;" onclick="...">✗ 拒绝任务</button>
<button style="background-color: #FFFACD; color: darkgold; border: none; padding: 6px 12px;" onclick="...">? 询问详情</button>

三种颜色分别对应「确定/拒绝/询问」三种行动类型,玩家一眼就能分辨。

常见问题

问题一:点击按钮没反应

可能原因排查方法
选择器写错了检查 onclick 里的选择器是不是 #lunatalk-input textarea.uni-textarea-textarea
textarea.value= 后面的引号没闭合检查整段 JavaScript 有没有引号问题
被浏览器/渲染器的安全策略拦截尝试简化 onclick 内容,去掉 alert 部分
你不在聊天房间页面必须在聊天房间里点按钮,其他页面没输入框

问题二:AI 生成的按钮 JavaScript 写错了

AI 自己写内联脚本很容易出错。最稳的办法是:

  1. 在角色卡格式要求里完整贴上标准模板
  2. 告诉 AI:"只修改 textarea.value='xxx' 里的 xxx,其他不动"
  3. 测试几轮看 AI 有没有老老实实照着来

问题三:按钮太宽或太挤

调整 padding 属性:

其他能用的内联事件

帮助文档没有完整列出支持哪些内联事件,但除了 onclick,以下几种大概率也支持:

事件触发时机可能的用途
onmouseover鼠标悬停悬停时改变按钮样式
onmouseout鼠标移出悬停后恢复样式
onfocus获得焦点键盘导航时高亮

但实际角色卡里只用 onclick 就够了——这是唯一可靠的交互方式。其他事件建议在熟悉 LunaTalk 后再尝试。