2.0.0-dev 羽毛笔拖动文本不起作用如何让它拖动文本

问题描述 投票:0回答:1

一般来说,在 quill 1.3 稳定版中,文本是可以移动的,也就是说,我们可以将某个列表从内部移动到某个地方,或者将文本从某个地方拖放到某个地方,不需要做任何额外的事情为此,即使在纯文本区域也是如此。

例如,如果您尝试下面的代码,您将看到“Hello World!” “世界!”您可以将其剪切并保留在“开头”,然后拖动即可获得剪切和粘贴的效果。

但是如果你删除 2.0.0 dev 版本注释行并获取 1.3.6 版本注释部分并运行它,如果它没有特别工作,我该如何使其工作?

<link href="https://cdn.quilljs.com/1.3.6/quill.snow.css" rel="stylesheet">

<!-- Create the editor container -->
<div id="editor">
  <p>Hello World!</p>
  <p>Some initial <strong>bold</strong> text</p>
  <p><br></p>
</div>

<!-- Include the Quill library -->
<script src="https://cdn.quilljs.com/1.3.6/quill.js"></script>
<!-- 
<script src="https://cdnjs.cloudflare.com/ajax/libs/quill/2.0.0-dev.3/quill.min.js"></script> 
-->

<!-- Initialize Quill editor -->
<script>
  var quill = new Quill('#editor', {
    theme: 'snow'
  });
</script>```
javascript quill react-quill
1个回答
0
投票

请注意,这只能部分回答您的问题,因为事件处理程序仅用于演示目的,远未正确实现。

默认情况下,Quill 2.0 通过在 e.preventDefault() 事件处理程序中添加

dragstart
来禁用所有
拖动事件
。该事件处理程序曾经存在于
Quill
类中,但 已移至
Scroll
blot 以便于覆盖
。这个改动在
2.0.0-dev.3
中不存在,所以我在新版本下测试了
2.0.0-beta.0

下面演示了如何覆盖

Scroll
blot 事件处理程序。 (我将把它留给其他人来弄清楚如何正确实现处理程序)。

let Scroll = Quill.import('blots/scroll');

class DraggableScroll extends Scroll {
    constructor(registry, domNode, { emitter }) {
        super(registry, domNode, { emitter });
        this.domNode.addEventListener('drop', (e) => this.handleDragEnd(e));
    }

    handleDragStart(e) {
        //e.preventDefault(); // remove to enable dragging 
    }

    /*simply demo handler only works on texts, and doesn't preserve styles*/
    handleDragEnd(e) {
        e.preventDefault();

        const data = e.dataTransfer.getData('text/plain');
        const selection = quill.getSelection();
        quill.deleteText(selection.index, selection.length);

        let index;
        if (document.caretRangeFromPoint) {
            index = document.caretRangeFromPoint(e.clientX, e.clientY).startOffset;
        } else {
            // firefox
            index = e.rangeOffset;
        }

        quill.insertText(index, data);
        quill.setSelection(index + data.length, 0);
    }
};

Quill.register(DraggableScroll);

var quill = new Quill('#editor', {
    theme: 'snow'
});
<link href="https://cdn.quilljs.com/1.3.6/quill.snow.css" rel="stylesheet">

<body class="h-full">
  <div id="editor">
    <p>Hello World!</p>
    <p>Some initial <strong>bold</strong> text</p>
    <p><br></p>
  </div>

  <script src="https://cdnjs.cloudflare.com/ajax/libs/quill/2.0.0-beta.0/quill.min.js"></script>

</body>

© www.soinside.com 2019 - 2024. All rights reserved.