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

时间:2013-06-20 10:38:00

标签: javascript html internet-explorer contenteditable

我正在开发基于contenteditable的文本编辑器,试图修改IE的可疑行为。

例如:按下输入

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

我发现IE在输入时完成了keyupkeydown之间的可疑行为。所以当这两个事件被解雇时,我可以添加我的修改。

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

案例是:      我想粘贴一个像这样的几个段落的文本块

paragraph 1

another paragraph

and so on

IE会自动将段落嵌入新的<p>标记中。如果我想为这些class元素添加<p>,我需要知道这些元素何时被创建。

我尝试onpastenodeInserted。在变革发生之前,他们都被解雇IE完成工作后是否有任何事件被解雇?

1 个答案:

答案 0 :(得分:0)

我一直在使用按键事件来检测它。 如果我记得corectly,你可以从输入参数中获取按键和修饰符,以检测Ctrl + v。

修改 显然不是,我刚刚检查过。 JQuery使用'paste'事件来识别id。

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 我借用someone elses event combination在内容更改后检测粘贴,但在某些浏览器中它会触发两次。

$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());
    }
});