如何粘贴到包含在自定义 Quill Embed Blot 中的文本输入?
How to paste into a text input contained within a custom Quill Embed Blot?
我已经成功地使用 Quill 创建了一个扩展 Embed
印迹的自定义印迹。我的印迹包含一个文本输入字段和一个按钮。
当我将光标放在文本输入框内并尝试粘贴一些文本时,文本被粘贴到 Quill 编辑器中,就在我的印迹之外。
我知道剪贴板模块处理粘贴,我已经查看了该模块,但我不确定如何继续。
我的想法是检测焦点何时位于编辑器中的任何输入元素上。如果是,则应禁用剪贴板模块或以其他方式允许正常的粘贴行为。
我最初的想法是注册我自己的扩展剪贴板模块并在那里进行检测。但是,我不确定如何指示剪贴板退出并执行正常的粘贴行为。
感谢任何指导!
我一直面临着完全相同的问题。您必须创建自己的 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)
我已经成功地使用 Quill 创建了一个扩展 Embed
印迹的自定义印迹。我的印迹包含一个文本输入字段和一个按钮。
当我将光标放在文本输入框内并尝试粘贴一些文本时,文本被粘贴到 Quill 编辑器中,就在我的印迹之外。
我知道剪贴板模块处理粘贴,我已经查看了该模块,但我不确定如何继续。
我的想法是检测焦点何时位于编辑器中的任何输入元素上。如果是,则应禁用剪贴板模块或以其他方式允许正常的粘贴行为。
我最初的想法是注册我自己的扩展剪贴板模块并在那里进行检测。但是,我不确定如何指示剪贴板退出并执行正常的粘贴行为。
感谢任何指导!
我一直面临着完全相同的问题。您必须创建自己的 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)