是否有任何事件可以告诉我IE已经完成了它满意的动作?

Is there any event can tell me that IE has finished its contenteditable action?

本文关键字:满意 事件 任何 IE 告诉我 是否      更新时间:2023-09-26

我正在研究一个基于contenteditable的文本编辑器,试图修改IE的可满足的行为。

例如:当按回车

时插入<br />不是一个新的<p>元素

我发现IE在输入时完成了keyupkeydown之间的满足行为。因此,我可以在这两个事件触发时添加修改。

但是当来到Paste时,它不起作用。

的情况是:我想粘贴一个包含几个段落的文本块,像这样

paragraph 1
another paragraph
and so on
IE会自动在新的<p>标签中嵌入段落。例如,如果我想将class添加到这些<p>元素中,我需要知道这些元素是何时创建的。

我试过onpaste, nodeInserted。他们在改变发生之前就解雇了。IE完成它的工作后是否有任何事件被触发??

我一直在使用按键事件检测它。如果我没记错的话,您可以从输入参数中获得按下的键和修饰符,以检测Ctrl+v

编辑显然不是,我刚查过了。JQuery使用'paste'事件。

HTML

<p id="cont" contenteditable="true">This is an editable paragraph.</p>
Javascript

$("#cont").keypress(function() {
    console.log("Keypress " + Math.random());
});
$("#cont").bind('paste', function(e){
    console.log("Paste " + Math.random());
});

小提琴在这里:http://jsfiddle.net/3djRp/3/

EDIT2 我借用了别人的事件组合在内容改变后检测粘贴,但在某些浏览器中它会触发两次。

$cont = $("#cont");
$cont.data('oldval', $cont.text());
//console.log($cont.data('oldval'));
$cont.bind("propertychange input keyup paste", function(event){
    if($cont.data('oldval') != $cont.text()) {
        //console.log("old " + $cont.data('oldval'));
        //console.log("new " + $cont.text());
        $cont.data('oldVal', $cont.text());
        console.log('change: ' + $cont.text());
    }
});