Angular 在IE11中捕获粘贴事件
我正在寻找一个解决方案,允许我粘贴什么存在于剪贴板时,一个用户点击按钮的角度 我曾使用此代码在用户键入Ctrl+V时粘贴数据,但我不知道如何在用户触发事件时单击按钮触发此事件Angular 在IE11中捕获粘贴事件,angular,Angular,我正在寻找一个解决方案,允许我粘贴什么存在于剪贴板时,一个用户点击按钮的角度 我曾使用此代码在用户键入Ctrl+V时粘贴数据,但我不知道如何在用户触发事件时单击按钮触发此事件 constructor() { document.addEventListener('paste', (e: ClipboardEvent) => { console.log(e.clipboardData.getData('Text')); e.preventDefault(); e.s
constructor() {
document.addEventListener('paste', (e: ClipboardEvent) => {
console.log(e.clipboardData.getData('Text'));
e.preventDefault();
e.stopPropagation();
});
}
copyFromClipBoard(event) {
// My Code goes here
}
您可以使用访问系统剪贴板。readText()
方法返回解析为系统剪贴板上复制的文本的承诺:
模板:
<button (click)="handleClick()">Click Me</button>
这是一个正在实施的计划
希望这有帮助 最简单的方法是从角度使用
render2
和ElementRef
copyFromClipBoard() {
/// For IE
if (window['clipboardData']) {
let value = window['clipboardData'].getData('Text');
console.log(value);
}
else {
// for other navigators
navigator['clipboard'].readText().then(clipText => {
console.log(clipText);
});
}
}
您只需在组件/指令中插入renderr2
,然后收听粘贴事件并执行以下操作:
constructor(element: ElementRef, renderer: Renderer2) {}
并在组件类内部侦听复制/粘贴事件:
renderer.listen(element.nativeElement, 'copy', (event) => {
// do your stuff
});
renderer.listen(element.nativeElement, 'paste', (event) => {
// Do your thing here
});
看,如果这对你有帮助的话。我看了这篇文章,但我是说,如果angular 6有任何新的解决方案,或者有一个新的钩子来获取剪贴板数据。谢谢,我尝试了这个解决方案,但不幸的是它在IE11上不起作用。你应该在你的问题中指定你需要支持IE11。您可能还应该创建一个StackBlitz或类似工具,以帮助澄清您正在使用的元素类型。您可以使用所描述的遗留技术。您可能需要使用element ref来关注输入/文本区域,以便通过
document.execCommand(“粘贴”)
执行粘贴。不管怎样,关于你的模板需要更多的信息。你是对的,我下次会创建一个StackBiltz,它比一个简单的代码要好得多。我必须感谢你的代码,我把它和IE规范混合在一起,它就工作了。
renderer.listen(element.nativeElement, 'copy', (event) => {
// do your stuff
});
renderer.listen(element.nativeElement, 'paste', (event) => {
// Do your thing here
});