Javascript 在ace编辑器中的“剪切”事件之前触发事件

Javascript 在ace编辑器中的“剪切”事件之前触发事件,javascript,jquery,ace-editor,Javascript,Jquery,Ace Editor,我想在剪切之前触发一个事件,这样我就可以得到正在剪切的文本,即已经选择的文本。我目前正在使用下面的代码,它似乎没有按预期工作 $("#editor").bind({ cut:function(){ console.log('Cut Detected'); alert(editor.selection.getRange()); } }); editor是可编辑的“div”标记的id。getRange()返回选择的开始

我想在剪切之前触发一个事件,这样我就可以得到正在剪切的文本,即已经选择的文本。我目前正在使用下面的代码,它似乎没有按预期工作

    $("#editor").bind({
    cut:function(){
        console.log('Cut Detected');            
       alert(editor.selection.getRange());

    }
});
editor是可编辑的“div”标记的id。getRange()返回选择的开始和结束。 编辑我正在使用content editable div,希望在其上应用该功能

 <!DOCTYPE html>
<html lang="en">
<head>
<title>Editor</title>
</head>
<body>

<div id='myTa' contenteditable>hello world where are you</div>
<script type='text/javascript' src='jquery-2.1.4.min.js'></script>
<script type='text/javascript'>
$("#myTa").on("cut", function(){
alert(this.selectionStart+ " to " + this.selectionEnd);
})
</script>


</body>
</html>

编辑
你好,世界,你在哪里
$(“#myTa”)。在(“cut”,function()上{
警报(this.selectionStart+“至”+this.selectionEnd);
})

起初我认为clipboardEvent将具有剪裁文本,但似乎没有,因此我尝试查找输入的与选择相关的属性并找到了它

参考文献是

此代码假定您的
$(“#编辑器”)
输入
文本区域

$("#editor").bind({
    cut:function(e){
        console.log('Cut Detected');
        var $this = $(this);
        var selectStart = this.selectionStart;
        var selectionEnd = this.selectionEnd;
       var clippedValue = $this.val().slice(selectStart, selectionEnd);
       // Now you have the clipped value, do whatever you want with the
       // value.
       alert(clippedValue);
    }
});
对于ContentEdable上的工作,您可以这样做,我刚刚从和中找到了信息

$(“#myTa”)。关于(“切割”,函数(e){
//看起来不一样,兄弟
var selections=window.getSelection();
var currentSelection=selections.getRangeAt(0);
var start=currentSelection.startOffset;
var end=currentSelection.endOffset;
var selectedContents=currentSelection.toString();
//你想干什么就干什么。
console.log(开始、结束);
console.log(selectedContents);
警报(所选内容);
});


询问;ndjkasn asdbasj aujs d sdib askjbnsaab asbh mjn a
您需要使用
cut
事件是正确的。ClipboardEventAPI显然不稳定,但是是的,我原以为它会包含移动到剪贴板上的文本

以下是我的作品:

$("textarea").on("cut", function(){
    alert(this.value.substring(this.selectionStart, this.selectionEnd));
})
值得注意的是,jQuery中不推荐使用
bind
,您应该在
上使用
。请尝试以下代码段:

$(“textarea”)。在(“cut”上,函数(){
警报(this.value.substring(this.selectionStart,this.selectionEnd));
})

我已经找到了答案的答案。似乎有一个编辑器。在我使用的ace编辑器中的('cut',function(e))上

editor.on("cut", function(e){
        console.log('Cut Detected');
        console.log(editor.selection.getRange());
    });

那么,这个问题的标题应该是“在剪切之前触发事件”吗?您使用的是tinymce编辑器吗?我使用的是ace编辑器。我试图在contenteditable div上应用上述代码,但代码似乎不适用于此。请推荐一个工作环境。我的代码:[链接]@RohitKatariya喂?你注意到了吗?我创建了一个代码片段来演示如何在
contenteditable div
中为
contenteditable div
执行操作?我正在尝试将上述代码应用于contenteditable div,但代码似乎不适用于此。请推荐一个工作环境。我的代码:[link]freetexthost.com/kimbohwfwmIn您链接到的代码没有正确复制上面的代码:
alert(this.selectionStart+”到“+this.selectionEnd)不起作用,您需要使用
selectionStart
selectionEnd
获取子字符串。再次阅读上述解决方案。