code: function () {
          const editor = this.editor
          const $textElem = editor.$textElem
  
          $textElem.on('keydown', e => {
              if (e.keyCode !== 8) {
                  return
              }
              const txtHtml = $textElem.html().toLowerCase().trim()
              if (txtHtml === '<p><br></p>') {
                  // 最后剩下一个空行，就不再删除了
                  e.preventDefault()
                  return
              }
          })
  
          $textElem.on('keyup', e => {
              if (e.keyCode !== 8) {
                  return
              }
              let $p
              const txtHtml = $textElem.html().toLowerCase().trim()
  
              // firefox 时用 txtHtml === '<br>' 判断，其他用 !txtHtml 判断
              if (!txtHtml || txtHtml === '<br>') {
                  // 内容空了
                  $p = $('<p><br/></p>')
                  $textElem.html('') // 一定要先清空，否则在 firefox 下有问题
                  $textElem.append($p)
                  editor.selection.createRangeByElem($p, false, true)
                  editor.selection.restoreSelection()
              }
          })
  
      }
docs: 清空时保留 <p><br></p>