如何在 CodeMirror 编辑器中添加 <span>?

Pep*_*zed 1 javascript codemirror

请不要使用jQuery!

我想在 CodeMirror 编辑器的正文中添加一个样式的跨度。这是为了邮件合并之类的应用程序,您可以在其中执行以下操作:(来自 Zapier) 例子

我相信这可以通过使用CodeMirror的Widget是可能的,但我迷路了,以什么方向去。我发现类似的(虽然复杂得多)的东西的例子在这里

我还尝试了tagify,它与我所追求的非常相似,但没有多行输入,这是必需的

我所需要的只是添加和删除(通过标签后面的插入符号的退格键)这些跨度的能力,但似乎没有一个简单的解决方案。

此外,如果有一个方便的库或其他一些方向,我可以不涉及 CodeMirror 也可以。

Pep*_*zed 7

CodeMirror 实际上非常适合这一点。

首先在文档中插入一些占位符,例如[[tag]]。

var lineNumber = 0;
var charNumber = 0;
var snippet = "[[tag]]"
editor.doc.replaceRange(snippet, {line:lineNumber, from: charNumber});
Run Code Online (Sandbox Code Playgroud)

然后创建你的 DOM 元素,我推荐一个 span。

var htmlNode = document.createElement("span");
//Style and add what you like to the span
Run Code Online (Sandbox Code Playgroud)

然后使用doc.markText该节点替换它。

editor.doc.markText({line: lineNumber,ch: charNumber}, {line: lineNumber,ch: charNumber + snippet.length}, {
   replacedWith: htmlNode
})
Run Code Online (Sandbox Code Playgroud)

  • 您可以使用“editor.doc.setBookmark”直接执行此操作,而无需插入占位符文本。 (2认同)