HTML 鼠标点击复制元素内容

Intro

  • 效果展示

在这里插入图片描述

  • 方法封装
copyInnerTextOfCell = (event) => {
  let innerText = event.target.innerText;
  var tmpInput = document.createElement("input");
  document.body.appendChild(tmpInput);
  tmpInput.value = innerText;
  tmpInput.select();
  document.execCommand("cut"); // copy
  tmpInput.remove();
  alert("复制成功!" + innerText);
}
  • 原理、兼容性、替代方案
    官网文档:< https://developer.mozilla.org/zh-CN/docs/Web/API/Document/execCommand>
    • 实现原理:使用了DOM原生的API document.execCommand(commandStr)
      当一个HTML文档切换到设计模式时,document暴露 execCommand 方法,该方法允许运行命令来操纵可编辑内容区域的元素。
    • 兼容性: 已废弃。
    • 替代方案/趋势:将来会被 Clipboard替代(需要用户授权后才能运行相关API)。

HTML

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>wuyujin1997</title>
  <script>
  copyInnerTextOfCell = (event) => {
    let innerText = event.target.innerText;
    var tmpInput = document.createElement("input");
    document.body.appendChild(tmpInput);
    tmpInput.value = innerText;
    tmpInput.select();
    document.execCommand("cut"); // copy
    tmpInput.remove();
    alert("复制成功!" + innerText);
  }
  </script>
</head>
<body>
  
  <p onclick="copyInnerTextOfCell(event)">这是 p 标签内容</p>
  <div onclick="copyInnerTextOfCell(event)">这是 div 标签内容</div>
  <span onclick="copyInnerTextOfCell(event)">这是 span 标签内容</span>
  
</body>
</html>

More

其实核心代码就是通过 execCommand(“copy”) 把某些文本复制到系统剪贴板

至于是单击触发onClick事件
还是双击触发onDbClick事件
亦或是鼠标右键触发onContextMenu事件
或其他事件,都可以成为这个复制操作的触发点动作。

要实现让鼠标紧跟着元素移动,可以使用 JavaScript 中的鼠标事件和 CSS 属性来实现。 首先,需要为元素添加一个鼠标按下事件监听器,以便在鼠标按下时开始移动元素。在该事件监听器中,可以设置一些变量来存储鼠标当前位置和元素当前位置,以便在移动时计算新的位置。 接下来,在鼠标移动事件监听器中,可以根据鼠标当前位置和之前保存的位置计算出要移动的距离,并将元素的 CSS 属性 `left` 和 `top` 设置为新的位置值。这样,元素就会跟随鼠标移动。 最后,在鼠标抬起事件监听器中,需要停止移动元素并清除之前设置的变量。 下面是一个简单的示例代码: ```html <div id="element" style="position: absolute; left: 0; top: 0;">Move me!</div> <script> var element = document.getElementById('element'); var isDragging = false; var mouseX, mouseY; var elementX, elementY; element.addEventListener('mousedown', function(e) { isDragging = true; mouseX = e.clientX; mouseY = e.clientY; elementX = parseInt(element.style.left) || 0; elementY = parseInt(element.style.top) || 0; }); element.addEventListener('mousemove', function(e) { if (isDragging) { var deltaX = e.clientX - mouseX; var deltaY = e.clientY - mouseY; element.style.left = (elementX + deltaX) + 'px'; element.style.top = (elementY + deltaY) + 'px'; } }); element.addEventListener('mouseup', function(e) { isDragging = false; }); </script> ``` 这段代码会让页面上的一个元素跟随鼠标移动。你可以尝试将其复制到一个 HTML 文件中并打开,然后点击并拖动元素看看效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值