Javascript 如何在默认情况下创建粘贴事件?

Javascript 如何在默认情况下创建粘贴事件?,javascript,html,angular,paste,w3c,Javascript,Html,Angular,Paste,W3c,我正在使用angular 4,并尝试使用contenteditable <div contenteditable='true' id='editor' [innerHtml]='data'></div> 我能够操纵粘贴数据,但无法启动粘贴行为。使用preventDefault和StopperPogation,我能够停止粘贴的默认行为,并且使用getData,我能够从剪贴板中提取数据。但现在我被困在这里,无法启动粘贴事件。在文档中,据说我们需要创建一个自定义事件,如粘贴剪

我正在使用angular 4,并尝试使用contenteditable

<div contenteditable='true' id='editor' [innerHtml]='data'></div>
我能够操纵粘贴数据,但无法启动粘贴行为。使用preventDefault和StopperPogation,我能够停止粘贴的默认行为,并且使用getData,我能够从剪贴板中提取数据。但现在我被困在这里,无法启动粘贴事件。在文档中,据说我们需要创建一个自定义事件,如粘贴剪贴板数据(newData)。但我可以找到任何关于如何创建这样的活动的参考资料

//由于我们正在取消粘贴操作,因此需要手动

//将数据粘贴到文档中

粘贴剪贴板数据(newData)


您不需要发送另一个
粘贴事件。只需将所需内容插入
contenteditable

下面是一个使用
document.execCommand(“insertHTML”,…)
的示例-请参阅其他问题(如),以使其在IE中工作:

window.onload=function(){
document.addEventListener('paste',函数(e){
log(“粘贴处理程序”);
var s=e.clipboardData.getData('text/html')。替换(“this”、“that”)
document.execCommand(“insertHTML”,false,s);
e、 预防默认值();
});
}

1) 复制此文本

2) 把它贴在这里:。。。(“this”应替换为“that”)


您可以使用
new ClipboardEvent()
()创建一个(不受信任的)粘贴事件,然后使用
dispatchEvent
将其发送到原始事件的目标。我已经尝试过了。。它不工作可能是因为它是一个不可信的事件。那你就得从另一个角度来处理你的问题了。是处理
内容可编辑
元素的有效方法。
document.getElementById('editor').addEventListener('paste', handlePaste);
function handlePaste(e) {
  var clipboardData, pastedData;
  // Stop data actually being pasted into div
  clipboardData = e.clipboardData;
  pastedData = clipboardData.getData('text/html');
  e.stopPropagation();
  e.preventDefault();
}