← 全部文档

内联代码

把一个单词或一段选区标记为代码,用于句子中的 getHTMLCode() 之类的名称。文本会被包装在一个不带属性的 <code> 元素中,再按一次按钮即可移除。

编辑器中的句子 Call editor.getHTMLCode() to read the content,其中 editor.getHTMLCode() 以等宽字体显示在灰色背景上,内联代码按钮处于高亮状态
光标位于 editor.getHTMLCode() 内部;点击一次 </> 按钮,整个单词就被标记为代码。光标位于代码中时,按钮显示为活动状态。

启用

该功能由 inlinecode.js 插件提供(也包含在 plugins/all_plugins.js 中)。它的命令和工具栏项为 inlinecode(工具提示为 "Inline code")。按钮出现的位置:

  • toolbar: "full":位于主行中,在上标和下标旁边。
  • 默认工具栏:位于 "More"(⋮)菜单中。
  • 您自己的工具栏:把 inlinecode 添加到任意位置。
<link rel="stylesheet" href="/richtexteditor/rte_theme_default.css">
<script src="/richtexteditor/rte.js"></script>
<script src="/richtexteditor/plugins/inlinecode.js"></script>

<div id="editor"><p>Call editor.getHTMLCode() to read the content, then save it.</p></div>
<script>
var editor = new RichTextEditor("#editor", {
    toolbar: "mytoolbar",
    toolbar_mytoolbar: "{bold,italic,underline,inlinecode}|{insertlink,insertcode}|{undo,redo}"
});
</script>

该插件没有选项。命令名为 inlinecode,因为 code 已经是编辑器的 HTML 源代码视图。

使用方法

  • 有选区时,选中的文本会被包装并保持选中状态,因此再按一次即可再次移除代码。
  • 只有光标时,命令作用于光标所在的单词:即两侧到最近空格为止的字符序列。光标保持在原位。在空白处不会发生任何事;不会创建空的 <code>。
  • 移除。如果所有选中的字符都已经是代码,命令会移除代码。移除一段代码中的一部分会将其拆分:在 <code>the content</code> 中选中 "content" 并按下按钮,结果是 <code>the </code>content。代码段内部的斜体或粗体会保留在被取消代码标记的文本上,但两侧的代码部分可能会保留一个空的副本:在 <code>a <i>b</i> c</code> 中对 "b" 取消代码标记,保存结果为 <code>a <i></i></code><i>b</i><code><i></i> c</code>。
  • 输入。开启编辑器的内联 Markdown 快捷方式时(markdownInlineEnabled,默认开启),输入 `npm install` 会在输入结束反引号时生成 <code>npm install</code>。这无需插件也能使用;插件增加的是按钮和移除代码的方式。

通过脚本:editor.execCommand("inlinecode") 或 editor.toggleInlineCode() 在当前选区处切换代码标记,editor.isInlineCode() 判断光标是否位于代码中。该命令没有键盘快捷键。

注意事项

  • 保存的标记是一个不带类名的元素:
    <p>Call <code>editor.getHTMLCode()</code> to read the content, then save it.</p>
    最终相邻的两段代码会被合并为一个元素,只包含空格的选区不会被包装。
  • 在 <pre> 代码块内部或已有代码内部不会进行包装,因为两者本来就是代码。多行代码块请使用 insertcode。
  • 灰色背景和等宽字体来自编辑器的内容样式表(runtime/richtexteditor_content.css,规则 code { … })。显示所保存 HTML 的页面需要自己的 code 样式。
  • 净化程序必须允许 code 元素。大多数净化程序默认允许。

相关内容:工具栏项参考、execCommand、代码片段演示。