使用javascript禁用文本移动

使用javascript禁用文本移动,javascript,textselection,Javascript,Textselection,我正在为以下问题搜索javascript解决方案。 我在我的网站上使用CKEditor,但我认为这是不相干的。因为我认为这是一个本机功能,而不是CKEditor的功能 我想禁用在编辑器中移动选定文本。 用户需要能够在编辑器中移动选择文本,这可能不会被禁用 我唯一想禁用的是移动选择。或者最好删除选择。使用ondrop事件 myEditor.ondrop = function preventDrop (e) { e.preventDefault(); }; 但是,如果更改跟踪是您真正想要

我正在为以下问题搜索javascript解决方案。 我在我的网站上使用CKEditor,但我认为这是不相干的。因为我认为这是一个本机功能,而不是CKEditor的功能

我想禁用在编辑器中移动选定文本。 用户需要能够在编辑器中移动选择文本,这可能不会被禁用


我唯一想禁用的是移动选择。或者最好删除选择。

使用
ondrop
事件

myEditor.ondrop = function preventDrop (e) {
    e.preventDefault();
};

但是,如果更改跟踪是您真正想要的,那么就没有必要阻止拖放。只需使用
ondrop
事件来跟踪更改。对于较新的浏览器,只需使用
oninput
。无论输入方法如何,都将检测更改


我在网上搜索,谷歌,stackoverflow。但我真的不知道从哪里开始。这是哪个项目?开始?你能解释一下你为什么想要这个吗?我正在做一个曲目更改功能。我找不到跟踪这种变化的方法。我在网上搜索的每一个地方,都会发现相同的元素在移动。。他们将事物/事件解释为脱离元素。但是如果你移动一个文本选择,那就是一个元素,一个TextNode或者一个TextNode的一部分,那么我不想要像dragout这样的事件?或者我错了吗?对于更改跟踪,您可以只绑定到元素上的更改事件吗?oninput事件在-IE9中不受支持,客户端希望在ie7之前得到支持。但除此之外,oninput就像上面一条注释中的onchange一样,是一个我不需要的完整解决方案。不过谢谢你的主意。ondrop事件正是我想要的。就个人而言,我将使用编辑器扩展您的解决方案。ondragstart=function(e){e.preventDefault();};不要给你的客户一个可能性的想法。不仅要跟踪输入,还必须跟踪删除。因此,像格里格先生评论中那样的oninput或onchange事件将是有用的。因为现在我必须从onDragStart中找到所选内容,并将其标记为“已删除”。之后,我必须等待插入。如果没有放在文本区域内。最后标记的已删除文本将被撤消。但现在,我坚持防止被拯救。下一版本中的新功能;)@是的,
ondragstart
是一个逻辑扩展,可以提高可用性。与其完全取消事件,不如在
ondragover
期间为
editor
设置
cursor:no drop
,并在
ondragover
期间重置光标。通过这种方式,它向用户提供了拖放不可用的视觉提示,但不会破坏浏览器。@spons-
oninput
不像
onchange
,当控件失去焦点时会触发<代码>oninput在每次值更改时都会触发,即使它具有焦点
oninput
onkey*
事件的不同之处在于,例如,当按下箭头键时,不会触发该事件。
oninput
onchange
都是为删除而激发的,但从不
ondrop
。并且
ondragstart
不一定表示删除。如果您正在实现一个撤销堆栈,我会使用
oninput
,并进行适当的降级。要显示更改,请使用
onchange
和类似John Resig的diff算法。我从来没有说过它们是相等的。我说的是,这是一个完整的解决方案的一部分,我不寻找。这就是为什么我说这就像上面一篇文章中的onchange想法一样。除此之外,我从未打算做一个撤销堆栈。因为CKEditor中已存在撤消堆栈。撤销堆栈是所有撤销操作的完整解决方案,我正在做更多的操作。但别担心。。这就是为什么我说这是下一个版本的东西。因为我没有时间去研究它。