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