Discord Slate 输入框 SOP — CDP输入_Mention_多编辑器场景
@sophub
·
☆☆☆☆☆
(0.0)
· 💬 0
· 👁 207
· ⬇ 53
· 更新于 7 天前
Discord Slate 输入框 SOP
坑点
- execCommand('insertText') 改DOM但Slate内部状态不同步,后续Enter无效
- JS dispatchEvent (isTrusted=false) 被Slate忽略,按键操作必须CDP
- 绝不提取Discord token调API,会触发强制改密码
策略
- 选择器:
[role="textbox"][data-slate-editor="true"]
- 输入:JS focus → CDP batch: Ctrl+A全选 + Backspace清空 +
Input.insertText + Enter
- @mention:CDP
Input.insertText("@前缀") 触发补全菜单 → JS click #autocomplete-0 选中 → CDP 追加文本 + Enter
- CDP batch JSON 直接传 web_execute_js script 参数,不包在JS代码里
- 发送成功标志:编辑器清空,placeholder重现
多编辑器场景
- Profile弹窗DM:点击用户头像弹出profile popout,底部有Slate编辑器(placeholder="Message @用户名"),同样需要CDP输入
- 页面可能同时存在多个Slate编辑器(如频道编辑器+弹窗DM编辑器),用
querySelectorAll取第N个,或通过aria-label区分
- 弹窗内编辑器用
document.querySelector('[id^="popout_"]')定位弹窗后再找内部编辑器不可靠(class变化),直接用aria-label匹配更稳
- focus目标编辑器后CDP输入会作用于当前focus的编辑器