我是阿童木试图恢复的自动编辑更正脚本。自2015年以来,我已经对其进行了大量的更新、改进和使用Stack Exchange的更改。
坚持的一件事是从新的StackApps WYSIWYG编辑器中设置标记,该编辑器目前用于元站点上的答案。我可以在页面中找到元素并使用jQuery获取它的标记:
$('.post-editor .markdown').text()但是,在修改之后,我还没有弄清楚如何将标记返回到编辑器中。我发现以下几点看起来很有希望:
StackExchange.stacksEditor.getInstanceFromElement($('.post-editor'))但当我运行它时,我得到:
未定义的TypeError:
t.dataset是未定义的L https://meta.stackexchange.com/Content/Js/stacks-editor.en.js?v=209d11c01c46:1
我还尝试在[0]选择器之后使用jQuery,以防编辑器需要普通的JavaScript对象。然而,这也产生了同样的错误:
StackExchange.stacksEditor.getInstanceFromElement($('.post-editor')[0])我找到了另一个在using中封装类似内容的用户脚本,但是我得到了相同的结果:
StackExchange.using("stacksEditor",function(){StackExchange.stacksEditor.getInstanceFromElement($('.post-editor'))})如何从用户脚本获得对StacksEditor的访问,以便在自动编辑后设置标记?
发布于 2022-06-11 00:19:58
您要查找的元素(是的,它应该是一个普通的DOM元素,因为getInstanceFromElement希望能够访问它上的dataset属性)不是带有post-editor CSS类的编辑器包装器,而是textarea后代:
getInstanceFromElement在dataset上访问stacksEditorInstanceId,如您所见,它对应于textarea的data-stacks-editor-instance-id属性。
因此,以下内容将成功地返回实例:
const instance = StackExchange.stacksEditor.getInstanceFromElement(
document.getElementById("js-stacks-editor-content")
);https://stackapps.com/questions/9431
复制相似问题