清除剪贴板以禁止未经授权的复制,插入消息?
Posted
技术标签:
【中文标题】清除剪贴板以禁止未经授权的复制,插入消息?【英文标题】:Clear clipboard to prohibit unauthorised copying, insert message? 【发布时间】:2013-05-20 20:49:16 【问题描述】:使用 ctrl+c 复制网站数据时,是否可以将自己的消息写入剪贴板?我发现了一些清除剪贴板的 javascript - 很高兴知道是否有一些东西可以写入它,即将剪贴板中的文本替换为“请使用我们网站的印刷版”之类的内容。
function clearData()
window.clipboardData.setData('text', '')
function cldata()
if (clipboardData)
clipboardData.clearData();
setInterval("cldata()", 1000);
<body ondragstart="return false;" onselectstart="return false;" oncontextmenu="return false;" onload="clearData();" onblur="clearData();">
<h1>Example text</h1>
<input type="text">
【问题讨论】:
试图颠覆标准浏览器功能的网站真的很烦人。请不要! 用户仍然可以在本地将页面保存为 html,然后从其中复制文本... 【参考方案1】:您无法清除用户的剪贴板历史记录。但是,
你可以用其他东西替换他们的剪贴板
navigator.clipboard.writeText(" ");
或者您可以编写一个脚本,当他们尝试复制某些内容时它会停止它。
document.addEventListener('copy', function(e)
e.preventDefault();
)
【讨论】:
【参考方案2】:您无法清除剪贴板数据,因为没有相应的功能。
删除它的最佳方法是分配空值。
即
navigator.clipboard.writeText("");
【讨论】:
【参考方案3】: function clearData()
window.clipboardData.setData('text', '')
function cldata()
if (clipboardData)
clipboardData.clearData();
setInterval("cldata()", 1000);
<body ondragstart="return false;" onselectstart="return false;" oncontextmenu="return false;" onload="clearData();" onblur="clearData();">
<h1>Example text</h1>
<input type="text">
【讨论】:
欢迎来到 SO。请为未来的读者解释您的答案。 哎呀,在过去的 6 到 8 年里,我还没有看到有人将一串代码传递给setInterval
。我希望您知道不建议这样做。【参考方案4】:
您可以放置以下内容:
$( document ).ready(function()
if (event.ctrlKey && event.keyCode == 67)
var inputFieldClear = document.createElement("input");
inputFieldClear.setAttribute("value", "Insert Default Value Here");
document.body.appendChild(inputFieldClear);
inputFieldClear.select();
document.execCommand('copy');
inputFieldClear.remove();
console.log("Attempting to Alter Clipboard")
);
这适用于 TamperMonkey 之类的东西 - 不确定它是否可以合并到网站源中。
希望对您有所帮助! :)
【讨论】:
【参考方案5】:Yes, you can。基本技巧是检测用户何时按住 Control,并在页面上选择不同的文本。
【讨论】:
【参考方案6】:你不能纯粹通过 JavaScript 来做到这一点。
剪贴板的JavaScript编辑被认为是security vulnerability(还有much more discussion on this)。
您可以通过使用 Flash 进行剪贴板访问与 JavaScript 交互的黑客来实现。
【讨论】:
但是可以使用async clipboard API 写入剪贴板。以上是关于清除剪贴板以禁止未经授权的复制,插入消息?的主要内容,如果未能解决你的问题,请参考以下文章