JS-是否有显示剪贴板文本的方法



我正在做一项学校作业,试图提高Ctrl + cCtrl + p的可见性。我现在的目标是显示在第二个textarea中复制了哪些文本。我的代码"有效",但并不理想。

这是我的代码(我从这里和这里得到的(:

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<h3>Ctrl+c Ctrl+v allowed</h3>
<textarea></textarea>
<br>
<br>
<h3>Clipboard</h3>
<textarea id="clipBoard"></textarea>
<script>
$(document).ready(function() {
var ctrlDown = false,
ctrlKey = 17,
cmdKey = 91,
vKey = 86,
cKey = 67;
$(document).keydown(function(e) {
if (e.keyCode == ctrlKey || e.keyCode == cmdKey) ctrlDown = true;
}).keyup(function(e) {
if (e.keyCode == ctrlKey || e.keyCode == cmdKey) ctrlDown = false;
});     
// Document Ctrl + C/V 
$(document).keydown(function(e) {
var clip = document.getElementById("clipBoard");
if (ctrlDown && (e.keyCode == cKey))
{
navigator.clipboard.readText()
.then(text => {
clip.value = text;
})
.catch(err => {
});
console.log("Document catch Ctrl+C");
}
if (ctrlDown && (e.keyCode == vKey)) 
{
console.log("Document catch Ctrl+V");
}
});
});
</script>

此解决方案存在2个问题。

首先,网页要求获得复制权限。我理解这样做的必要性,但有办法绕过这一点吗?

其次,如果用户说不,那么当剪贴板中有东西会破坏任务时,我就无法显示剪贴板文本。

有办法解决这些问题吗?

谢谢!

否。您可以使用像execCommand这样的旧技术将剪贴板内容粘贴到一个聚焦的文本框中,但这需要实际粘贴,而且已经过时了。现代剪贴板API需要用户权限是有充分理由的(想象一下,如果你复制了色情URL或银行账号,网站可以在没有人知道的情况下获得这些信息(——试图绕过需要权限的API的权限要求是不好的。如果这是学校作业,我看不出你的老师或任何给你打分的人有什么理由不允许浏览器在他们要求你获取剪贴板内容时使用剪贴板API。

最新更新