Javascript 我想从单击功能复制参数 复制 功能copyToClipboard(元素){ 变量$temp=$(“”); $(“正文”)。追加($temp); $temp.val($(element.text()).select(); 文件。执行命令(“副本”); $temp.remove(); }

Javascript 我想从单击功能复制参数 复制 功能copyToClipboard(元素){ 变量$temp=$(“”); $(“正文”)。追加($temp); $temp.val($(element.text()).select(); 文件。执行命令(“副本”); $temp.remove(); },javascript,Javascript,我想复制我通过onclick函数传递的#2E5090,但我无法执行该操作您可以使用此代码代替该代码: <button onclick="copyToClipboard('#2E5090')">Copy</button> function copyToClipboard(element) { var $temp = $(""); $("body").append($temp); $

我想复制我通过onclick函数传递的
#2E5090
,但我无法执行该操作

您可以使用此代码代替该代码:

<button onclick="copyToClipboard('#2E5090')">Copy</button>


function copyToClipboard(element) { 
    var $temp = $(""); 
    $("body").append($temp); 
    $temp.val($(element).text()).select(); 
    document.execCommand("copy"); 
    $temp.remove(); 
}

注意:我提出这个问题是为了解决问题,但它附带了一个健康警告

execCommand
显然已经过时了,我理解的对吗?例如,请参见其中的说明,尽管截至2020年10月,几乎所有浏览器都支持该功能,但不应在新网站上使用该功能

纯Javascript方法:

函数copyToClipboard(文本){
var temp=document.createElement('INPUT');
temp.style.position='fixed';//修改以使输入远离屏幕。。。
temp.style.left='-10000px';/…但我不确定是否需要它。。。
文件.正文.附件(临时);
温度值=文本;
临时选择();
文件。执行命令(“副本”);
//temp.remove();/…因为我们在回流焊之前移除它(?)
document.body.removeChild(temp);//以适应IE
}

Copy
注意:我给出了一个答案,其中接受了问题中的代码,并对其进行了轻微修改,但仍然使用JavaScript中的execCommand,但警告称,这一命令现在(2020年10月)已过时,尽管在许多(大多数)浏览器上仍然可用

这是一种更“现代”的做事方式,必要时可以使用execCommand。这看起来相当复杂,因为我们必须检查浏览器的JS是否支持异步,这是通过加载另一个JS文件来完成的

下面是要放入名为new-copy-to-clipboard.js的文件中的代码:

function CopyToClipboard(containerid) {
      if (document.selection) {
        var range = document.body.createTextRange();
        range.moveToElementText(document.getElementById(containerid));
        range.select().createTextRange();
        document.execCommand("copy");
      } else if (window.getSelection) {
        var range = document.createRange();
        range.selectNode(document.getElementById(containerid));
        window.getSelection().addRange(range);
        document.execCommand("copy");
        alert("Link Copied to ClipBoard");
      }
    }
下面是主要的js代码:

async function newCopyToClipboard(text) {
      try {
      await navigator.clipboard.writeText(text);
      } catch (error) { // for when e.g. has been called using http not https
        fallbackCopyToClipboard(text);
      }

复制
//测试浏览器是否支持异步函数声明
新承诺(功能(解决、拒绝){
让script=document.createElement('script');
document.body.appendChild(脚本);
script.onload=resolve.bind(null,true);
script.onerror=拒绝;
script.async=true;
script.src='newcopy to clipboard.js';
})
.然后(函数(){
})
.catch();
函数fallbackCopyToClipboard(文本){
设temp=document.createElement('INPUT');
temp.style.position='fixed';//修改以使输入远离屏幕。。。
temp.style.left='-10000px';/…但我不确定是否需要它。。。
文件.正文.附件(临时);
温度值=文本;
临时选择();
document.execCommand('copy');
//temp.remove();/…因为我们在回流焊之前移除它(?)
document.body.removeChild(temp);//以适应IE
}
功能copyToClipboard(文本){
if(newCopyToClipboard的类型=='function'){
newCopyToClipboard(文本);
}
否则{
fallbackCopyToClipboard(文本);
}
}
}

这是否回答了您的问题?正如重复建议的那样-Change
var$temp=$(“”)
var$temp=$(“textarea”)
由@Farsad强调的问题给出了一些有趣的建议,但是,在11岁的时候,有56个答案,有些甚至回到了Flash,我们可能应该尝试找到一个答案放在这里,涵盖大多数浏览器,希望包括2020年的IE11。这是解决一个不同的问题,如何从给定元素复制文本,不是如何复制某些给定的文本…而是对使用范围有一些好的想法,这些范围可以根据问题进行调整以回答问题。
<body>
<button onclick="copyToClipboard('#2E5090')">Copy</button>

<script>
// test whether the browser supports async function declaration or not
new Promise(function (resolve, reject) {
  let script = document.createElement('script');
  document.body.appendChild(script);
  script.onload = resolve.bind(null, true);
  script.onerror = reject;
  script.async = true;
  script.src = 'new-copy-to-clipboard.js';
})
.then(function () {
})
.catch();

function fallbackCopyToClipboard(text) {
    let temp = document.createElement('INPUT');
    temp.style.position = 'fixed'; //hack to keep the input off-screen...
    temp.style.left = '-10000px'; //...but I'm not sure it's needed...
    document.body.appendChild(temp); 
    temp.value = text; 
    temp.select();
    document.execCommand('copy');
    //temp.remove(); //...as we remove it before reflow (??)
    document.body.removeChild(temp);//to accommodate IE
}

function copyToClipboard(text) {
    if (typeof newCopyToClipboard === 'function') {
      newCopyToClipboard(text);
  }
  else {
      fallbackCopyToClipboard(text);
    }
}

</script>
</body>
    }