我正在开发基于contenteditable
的文本编辑器,试图修改IE的可疑行为。
例如:按下输入
时插入<br />
而不是新的<p>
元素
我发现IE在输入时完成了keyup
和keydown
之间的可疑行为。所以当这两个事件被解雇时,我可以添加我的修改。
但是当来到Paste
时,它不起作用。
案例是: 我想粘贴一个像这样的几个段落的文本块
paragraph 1
another paragraph
and so on
IE会自动将段落嵌入新的<p>
标记中。如果我想为这些class
元素添加<p>
,我需要知道这些元素何时被创建。
我尝试onpaste
,nodeInserted
。在变革发生之前,他们都被解雇IE完成工作后是否有任何事件被解雇?
答案 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());
}
});