Javascript JS-有没有显示剪贴板文本的方法?
我正在做一项学校作业,试图提高Ctrl+c和Ctrl+p的可见性。我现在的目标是显示在第二个文本区域中复制的文本。我的代码“有效”,但并不理想 这是我从中获得的代码,并且: 此解决方案有两个问题 首先,该网页要求获得复制权限。我理解这一点的必要性,但有办法解决吗 第二,如果用户说不,那么当剪贴板中有东西会破坏作业时,我就不能显示clipbaord文本 有没有办法解决这些问题Javascript JS-有没有显示剪贴板文本的方法?,javascript,html,clipboard,Javascript,Html,Clipboard,我正在做一项学校作业,试图提高Ctrl+c和Ctrl+p的可见性。我现在的目标是显示在第二个文本区域中复制的文本。我的代码“有效”,但并不理想 这是我从中获得的代码,并且: 此解决方案有两个问题 首先,该网页要求获得复制权限。我理解这一点的必要性,但有办法解决吗 第二,如果用户说不,那么当剪贴板中有东西会破坏作业时,我就不能显示clipbaord文本 有没有办法解决这些问题 谢谢 不可以。您可以使用较旧的技术(如execCommand)将剪贴板内容粘贴到聚焦文本框中,但这需要实际粘贴,而且已经过
谢谢 不可以。您可以使用较旧的技术(如execCommand)将剪贴板内容粘贴到聚焦文本框中,但这需要实际粘贴,而且已经过时。现代剪贴板API需要用户权限,这是一个很好的理由——想象一下,如果你复制了色情URL或银行账号,网站可以在任何人都不知道的情况下获取这些信息——试图绕过需要权限的API的权限要求是不好的。如果这是一项学校作业,我认为您的老师或正在评分的人没有理由不允许浏览器在要求您获取剪贴板内容时使用剪贴板API。Ya我完全理解许可的目的。这是一个UI类,因此我有权使用剪贴板,但我必须解释用户每次按“否”或被提示所困扰的原因。这是不幸的,可能必须为此任务选择其他内容。谢谢你!如果用户按“否”,则表示他们不希望您阅读他们的剪贴板;你可以。在你的承诺链的末端捕捉到这一点,并显示一条消息,就像你说的我们无法读取你的剪贴板,因此此应用程序将无法运行。很抱歉或者别的什么。有没有一种方法可以让我只获得一次权限,然后再显示剪贴板数据?这就是它应该如何工作的,直到你重新加载页面或转到其他URL。哦,真的吗?现在,每当我按下Ctrl+c时,它都会提示我
<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>