大家好,我是程序员牛肉。
不知道大家平时使用“CSDN”和“掘金”的频率高不高。如果你经常使用的话,你就会遇到这样一个问题:
[每次复制文章内容的时候,粘贴到其他地方就会有一个版权信息。]
例如我们尝试复制下面的内容:
当我们将复制内容粘贴到其他平台的时候,就会出现一段版权信息:
你有想过这是如何做到的吗?
在想设计方案的时候,先想逻辑方案,再想具体的代码方案。那我想这个功能的逻辑方案应该就是:
[我们的前端去监听“复制”事件。每次复制完了之后,我们的前端就会把版权信息给他拼接到粘贴版中。]
那到底有没有这样一种api,可以实现向粘贴版中写数据呢?
当然有了:
navigator.clipboard 是一个Web API,它提供了一组方法来读取和写入用户的剪贴板。这个API允许网页与用户的剪贴板进行交互,例如复制和粘贴文本、图片等数据。
这个Web API 一共有四个比较常用的方法:
有了具体的工具之后,实现这个需求就很简单了。我自己写了一个小案例,放在这里,大家感兴趣的话可以自己试一试:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>自动添加版权信息示例</title>
</head>
<body>
<h1>你好,我是程序员牛肉</h1>
<p>这里是文章的内容,尝试复制这个文本。</p>
<button onclick="copyTextWithCopyright()">复制文本</button>
<script>
async function copyTextWithCopyright() {
try {
// 获取用户选择的文本或页面中的文本
const text = document.querySelector('p').innerText;
const copyrightNotice = `你好,这是程序员牛肉的文章。如果你想转载,请联系作者`;
// 添加三行空隙
const newline = '\n\n\n';
// 将版权信息添加到文本末尾
const textWithCopyright = text + newline + newline + newline + copyrightNotice;
// 写入剪贴板
await navigator.clipboard.writeText(textWithCopyright);
alert("文本已复制,包括版权信息。");
} catch (err) {
console.error('无法写入剪贴板内容: ', err);
}
}
// 监听复制事件
document.addEventListener('copy', (event) => {
const selection = document.getSelection();
if (selection.toString().length > 0) {
// 获取用户选择的文本
const text = selection.toString();
const copyrightNotice = `你好,这是程序员牛肉的文章。如果你想转载,请联系作者`;
// 添加三行空隙
const newline = '\n\n\n';
// 将版权信息添加到文本末尾
const textWithCopyright = text + newline + newline + newline + copyrightNotice;
// 阻止默认复制行为
event.preventDefault();
// 写入剪贴板
navigator.clipboard.writeText(textWithCopyright).then(() => {
// 恢复选择
document.execCommand('selectAll', false, null);
alert("文本已复制,包括版权信息。");
}).catch(err => {
console.error('无法写入剪贴板内容: ', err);
});
}
});
</script>
</body>
</html>
在这个代码中,我们尝试监听用户的“复制”事件,当用户尝试复制我们的文本的时候,我们就会调用自己的方法。在末尾拼接版权信息:“你好,这是程序员牛肉的文章。如果你想转载,请联系作者”。
我们看一看这个前端代码所表示的界面:
当我们尝试复制文本的时候,就会得到一个弹窗提醒。提醒我们已经为当前复制的文本添加了版权信息。
此时如果我们尝试粘贴文本,就会看到:
至此,我们就成功完成了“网站粘贴文本时自动添加版权信息”这个需求。
当我们回头看navigator.clipboard 这个API的时候,会发现它不仅可以写粘贴板,还可以读粘贴板。
读粘贴板这个功能也很强大,它可以用来实现复制好友链接到购物网站之后,购物网站自动跳转到对应的商品界面。
今天关于“网站粘贴文本时自动添加版权信息”的介绍就到这里了,希望我的文章可以帮到你。
如果让你实现这个需求,你还有什么别的方案吗?欢迎在评论区留言