如何用JS自动填充Jira中role=textbox的富文本编辑器字段?
搞定Jira富文本编辑器自动填充问题
为啥直接改DOM没用?
ProseMirror编辑器有自己独立的内部状态,你手动改role="textbox"的div、隐藏textarea这些DOM元素,只是改了表面的显示内容,根本没同步到编辑器的内部状态,Jira自然识别不出字段填了东西。
该怎么正确填充?
- 找到ProseMirror实例:Jira通常会把编辑器实例挂在DOM元素的属性上,比如试试
document.querySelector('[role="textbox"]').editor(不同Jira版本可能有差异,自己用浏览器控制台验证下)。 - 用编辑器API塞内容:通过实例的
dispatch方法更新内部状态,示例代码:// 先拿到编辑器元素 const editorElement = document.querySelector('[role="textbox"]'); if (!editorElement) return; // 获取ProseMirror实例 const editor = editorElement.editor; if (!editor) return; // 构造要填充的内容(得符合ProseMirror的节点结构) const content = { type: 'doc', content: [ { type: 'paragraph', content: [ { type: 'text', text: '这是自动填充的描述内容' } ] } ] }; // 更新编辑器内容 editor.dispatch(editor.state.tr.setContent(content)); - 补触发事件(可选):要是上面的方法还不行,手动触发输入和变更事件,让Jira的表单监听逻辑感知到变化:
editorElement.dispatchEvent(new Event('input', { bubbles: true })); editorElement.dispatchEvent(new Event('change', { bubbles: true }));
注意点:
- 不同Jira版本的编辑器实例挂载方式可能不一样,用浏览器开发者工具看元素属性、控制台调试确认下。
- 得等编辑器完全加载再执行代码,可以用
setInterval轮询等元素和实例出现,或者监听DOM变化事件。
内容的提问来源于stack exchange,提问作者Павел Шоломицкий
相关产品推荐
相关产品推荐

