Javascript 为什么';粘贴前&x27;事件未在webkit中激发?

Javascript 为什么';粘贴前&x27;事件未在webkit中激发?,javascript,html,safari,dom-events,Javascript,Html,Safari,Dom Events,beforecopy事件已激发,但未激发beforeplaste事件。为什么呢 <!DOCTYPE HTML> <html lang="en"> <head> <meta charset="UTF-8"> <style type="text/css">#editor{width:300px; height:300px; border: 1px solid black;}</style> </head> <b

beforecopy
事件已激发,但未激发
beforeplaste
事件。为什么呢

<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset="UTF-8">
<style type="text/css">#editor{width:300px; height:300px; border: 1px solid black;}</style>
</head>
<body>
<div id="editor" contentEditable="true">editor</div>
<script type="text/javascript">
var elEditor = document.getElementById("editor");

elEditor.addEventListener('beforecopy', function(e){
    console.log('beforecopy');
    e.preventDefault();
    e.stopPropagation();
}); 

elEditor.addEventListener('copy', function(e){
    console.log('copy');
}); 

elEditor.addEventListener('beforepaste', function(e){
    console.log('beforepaste');
    e.preventDefault();
    e.stopPropagation();
}); 

elEditor.addEventListener('paste', function(e){
    console.log('paste')
});
</script>
</body>
</html>

#编辑器{宽度:300px;高度:300px;边框:1px纯黑色;}
编辑
var elEditor=document.getElementById(“编辑器”);
elEditor.addEventListener('beforecopy',函数(e){
console.log('beforecopy');
e、 预防默认值();
e、 停止传播();
}); 
elEditor.addEventListener('copy',函数(e){
console.log('copy');
}); 
elEditor.addEventListener('beforepaste',函数(e){
console.log('beforeplaste');
e、 预防默认值();
e、 停止传播();
}); 
elEditor.addEventListener('paste',函数(e){
console.log('paste')
});
  • 小提琴链接:

在Chrome 23.0.1271.95和OS X 10.8.2上,
onbeforeplaste
仅在用户弹出上下文菜单时触发

:

在剪贴板内容粘贴到文档中之前发生,并提供启用粘贴菜单项的可能性

右键单击文本框会触发
onbeforeplaste
事件,但不按ctrl–v


如果有什么安慰的话,在我的测试中,
onpaste
事件会在实际粘贴文本之前触发,因此我只会使用
onpaste
事件来代替。

当然,除非您想知道要粘贴的文本是什么(可能是在粘贴之前执行一些预处理),onbeforepaste在safari中的粘贴变得更加有用,因为safari将阻止粘贴的发生,除非它是可编辑的内容。