首页 > 解决方案 > 在整个应用程序级别处理复制事件,Angular9

问题描述

我正在开发一个 Angular9 应用程序。在某些情况下,当双击页面任何部分的任何文本/标签并复制时,Chrome 默认会在复制的文本中添加一些不可打印的字符。

所以我认为,如果我可以在主 app.module 和 onCopy 中注入一些全局复制事件服务,我可以从复制的文本中替换不可打印的文本。

请建议我怎样才能做到这一点。在javascript中我发现了这样的东西:

document.addEventListener('copy', (event) => {
    console.log('copy action initiated')
});

标签: javascriptangular

解决方案


使用 Rxjs。

const source$ = fromEvent(document, 'copy');

现在只需订阅。

let subscription = source$.subscribe (copy => 
{
const selection = document.getSelection();
event.clipboardData.setData('text/plain', selection.toString().toUpperCase());
event.preventDefault();

console.log(copy) 
});

并且不要忘记在您的 ngOnDestroy 中取消订阅。


推荐阅读