Angular中如何获取剪贴板中复制的URL?
问题:复制URL时无法通过
text/html获取剪贴板数据 我用这段代码提取剪贴板文本:
const data = event.clipboardData.getData('text/html');
但复制URL时返回空字符串"",和普通文本表现不同。怎么才能获取剪贴板里的URL?
编辑补充
事件来自paste事件,完整Angular代码:
paste(event: ClipboardEvent) { const data = event.clipboardData.getData('text/html'); }
对应的HTML元素:
<div id="content" contentEditable="true" (paste)="paste($event)" ></div>
解决方案
优先获取纯文本格式:直接复制的URL(比如地址栏的链接)通常只存在于纯文本格式里,用
text/plain就能拿到:paste(event: ClipboardEvent) { const url = event.clipboardData.getData('text/plain'); console.log(url); // 这里就是复制的URL }检查所有剪贴板格式:如果纯文本不行,可以先打印所有可用格式,再针对性获取:
paste(event: ClipboardEvent) { // 先看剪贴板支持哪些格式 console.log(event.clipboardData.types); // 尝试获取URL专用格式或纯文本 const url = event.clipboardData.getData('text/uri-list') || event.clipboardData.getData('text/plain'); console.log(url); }为什么
text/html会为空?
只有复制网页里带格式的链接(比如<a>标签)时,剪贴板才会有HTML格式的数据。直接复制纯URL(比如地址栏、记事本里的链接),剪贴板里根本没有HTML内容,所以用text/html获取自然返回空。
内容的提问来源于stack exchange,提问作者Alvin Stefanus
相关产品推荐
相关产品推荐

