javascript - 我可以使用 javascript 将 onClick 粘贴到输入字段中吗

标签 javascript html clipboard copy-paste paste

另一位用户帮助我编写了这个不错的脚本,该脚本允许我单击表格单元格,其内容将复制到剪贴板。我不完全理解它,但它有效......我现在想向这个程序添加一些东西。首先是原始程序..

document.addEventListener('click', (e) => {
  let target = e.target;

  if(target.localName === 'td') {
  let range = document.createRange();
  range.selectNodeContents(target);  
  let sel= document.getSelection(); 
  sel.removeAllRanges(); 
  sel.addRange(range); 
  document.execCommand('copy');
  sel.removeAllRanges();
  target.classList.add('copy-animate');
  setTimeout(() => {target.classList.remove('copy-animate');}, 300);
  }
});
.copy-animate {background:#F00}
td {cursor:pointer;border:1px solid black}
input {border:1px solid black;width:200px}
Click a table cell to copy<br>
<table><td>milk</td><td>bread</td><td>eggs</td><td>cheese</td></table>

<br>This is the pasting area.  Try pasting here.<br>
<input type="text">

上面的程序监听 TD 上的点击并复制它。我现在想让它监听输入的点击,如果发生这种情况,则进行粘贴。我以为我可以添加一个类似的 IF 语句,如下所示,但它不起作用。请帮忙。因此,最终结果应该允许我只需单击两次即可从表格单元格复制到输入字段。我不想右键单击并从菜单中选择粘贴,或使用 CTRL-V。

 if(target.localName === 'input') {
  let range = document.createRange();
  range.selectNodeContents(target);  
  let sel= document.getSelection(); 
  sel.removeAllRanges(); 
  sel.addRange(range); 
  document.execCommand('paste');
  sel.removeAllRanges();
  }

最佳答案

据我所知,你不能以编程方式在js中进行粘贴。这是一种安全措施。

您可以做的是跟踪具有焦点的元素并监听复制事件。然后,您可以检查原始元素的输入值或innerHTML,并以这种方式获取内容以放入目标元素中。

关于javascript - 我可以使用 javascript 将 onClick 粘贴到输入字段中吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47878039/

相关文章:

javascript - 为什么 "$(this)"在以下示例中不起作用

jquery - 需要帮助使用 jQuery 和 CSS 自定义 Tab 滑出插件

.net - 如何将 RTF 文本复制到剪贴板以便在 Excel 中使用

c# - 将存储为 XML 字符串的 SVG 图像作为 image/svg+xml MIME 类型复制到 Windows 剪贴板

javascript - 日期选择器格式 JS

javascript - Mousedown 事件抑制 focusout 事件?

javascript - 如何使用JavaScript代码在YouTube Flash Player上放置文字?

jquery - 位置固定 div 低于 float div

jquery - 如何在 jQuery 元素之前插入结束标签?

c# - 将二进制数据复制到剪贴板