清除剪贴板以禁止未经授权的复制,插入消息?

时间:2013-05-25 10:42:14

标签: javascript html clipboard clear

使用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">

5 个答案:

答案 0 :(得分:2)

你不能完全通过JavaScript来实现。

剪贴板的JavaScript编辑被视为security vulnerability(并且有much more discussion on this)。

你可以通过使用Flash进行与JavaScript交互的剪贴板访问的黑客来实现。

答案 1 :(得分:0)

您可以放置​​以下内容:

$( 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之类的系统中起作用-不确定是否可以将其合并到站点源中。

希望有帮助! :)

答案 2 :(得分:0)

  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">

答案 3 :(得分:0)

您无法清除剪贴板数据,因为没有该功能。

删除它的最佳方法是分配空值。

navigator.clipboard.writeText("");

答案 4 :(得分:-1)

Yes, you can。基本技巧是您检测用户何时按住Control,并在页面上选择不同的文本。