是什么阻止 Javascript 将值存储在剪贴板上?

What could be preventing Javascript from storing the value on the clipboard?

我在 ASP.Net 网站中使用了一些简单的 Javascript。

一个值被计算并存储在一个隐藏的文本框中,如下所示。

<asp:LinkButton ID="LinkButtonShare" runat="server" CssClass="btn btn-success" OnClientClick="copyToClipboard()"><i class="fa fa-share-square"></i> Share</asp:LinkButton>
<div class="hidden"><asp:TextBox ID="TextBoxCopyURL" runat="server" ClientIDMode="Static"></asp:TextBox></div>

然后它执行我的Javascript,如下所示。

function copyToClipboard() {
  var copyText = document.getElementById("TextBoxCopyURL");
  copyText.select();
  document.execCommand("copy");

  /* Alert with the copied text */
  alert("Copied the text: " + copyText.value);

导致如下所示的警告,但该字符串从未复制到我在 Firefox 或 Chrome.

中的剪贴板

我似乎无法理解我在如此简单的事情上遗漏了什么...

您的代码略有不同,但基本相同。它按预期工作。 https://codepen.io/anon/pen/ZjWXoj

function copyToClipboard() {
  var copyText = document.getElementById("textinput");
  copyText.select();
  document.execCommand("copy");

  console.log(copyText.value); // logs copyText input value
}

document.querySelector('#btn').addEventListener('click', () => {
  copyToClipboard();
})

注意在js中不能直接获取剪贴板的内容。也就是说,您无法以编程方式触发粘贴或访问剪贴板的内容。

按照本页的示例:

https://forums.asp.net/t/1106610.aspx?How+to+copy+the+text+of+a+textbox+to+clipboard+

你可以这样解决:

function copyToClipboard() {
    var copyText = document.getElementById("TextBoxCopyURL");
    copyTextValue = copyText.value;

    window.clipboardData.setData('Text' , copyTextValue );

    /* Alert with the copied text */
    alert("Copied the text: " + copyTextValue );

}