Как вставить в текстовый ввод, содержащийся в пользовательском бланке Quill Embed? - PullRequest
0 голосов
/ 10 мая 2018

Я успешно использовал Quill для создания пользовательского блота, который расширяет блот Embed.В моем блоте есть поле для ввода текста и кнопка.

Когда я помещаю курсор в поле ввода текста и пытаюсь вставить какой-либо текст, текст вставляется в редактор Quill за пределами моего блота.

Я знаю, что модуль буфера обмена обрабатывает вставку, и я рассмотрел модуль, но я не уверен, что делать дальше.

Моя идея состоит в том, чтобы определить, находится ли фокус в любом элементе ввода в редакторе.,Когда это так, модуль буфера обмена должен быть отключен или иным образом разрешать нормальное поведение вставки.

Моя первоначальная мысль состоит в том, чтобы зарегистрировать свой собственный расширенный модуль буфера обмена и выполнить там обнаружение.Тем не менее, я не уверен, как дать указание буферу обмена выполнить нормальное поведение вставки.

Любое руководство приветствуется!

1 Ответ

0 голосов
/ 11 мая 2018

Я столкнулся с точно такой же проблемой.Вам нужно будет создать свой собственный Keyboard модуль, который расширяет модуль по умолчанию, чтобы предотвратить это, путем переопределения метода onPaste.

Вот что я использовал:

import Quill from 'quill'
const QuillClipboard = Quill.import('modules/clipboard')

export default class Clipboard extends QuillClipboard {
  onPaste (event) {
    // Contenteditables, inputs and textarea are embeded into rich elements
    // Do not capture the copy paste with Quill
    if (['DIV', 'INPUT', 'TEXTAREA'].indexOf(event.target.nodeName) !== -1) {
      return
    }

    super.onPaste(event)
  }
}

Quill.register('modules/clipboard', Clipboard, true)
...