javascript - 在整个应用程序级别处理复制事件,Angular9
问题描述
我正在开发一个 Angular9 应用程序。在某些情况下,当双击页面任何部分的任何文本/标签并复制时,Chrome 默认会在复制的文本中添加一些不可打印的字符。
所以我认为,如果我可以在主 app.module 和 onCopy 中注入一些全局复制事件服务,我可以从复制的文本中替换不可打印的文本。
请建议我怎样才能做到这一点。在javascript中我发现了这样的东西:
document.addEventListener('copy', (event) => {
console.log('copy action initiated')
});
解决方案
使用 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 中取消订阅。
推荐阅读
- javascript - 过滤对象的最佳方法
- mysql - 我们可以在SQL中对上期的总和进行分组吗
- r - 使用 if 条件,如果我们只有一个观察值,则只使用这段代码,如果我们有多个观察值,则跳过代码
- gitlab-ci - gitlab runner 不适用于特定项目
- authentication - 使用 OAuth2 进行身份验证时看起来如何
- apollo - apollo-link-http 包中的 new HttpLink 和 createHttpLink 的区别
- java - 用逗号分割字符串并将所有分割字符串居中
- symfony - Symfony 为单一语言使用多个翻译文件
- antlr - ANTLR4 带有贪婪 * 量词的谓词:避免不必要的谓词调用(lexing)
- python - 如何在 docx 中使列宽动态化?