简体   繁体   English

隐藏textarea字段时无法复制到剪贴板

[英]Unable copy to clipboard when the textarea field hidden

I tried the code below, but it doesn't works when the textarea field is with css display:none. 我尝试了下面的代码,但是当textarea字段与css display:none一起使用时,它不起作用。

I copy text from hidden textarea field, but when i tried to copy, it returns nothing. 我从隐藏的textarea字段复制文本,但是当我尝试复制时,它什么也不返回。 It works fine only when i remove the display:none css. 仅当我删除display:none css时,它才能正常工作。

Anything i made wrong or miss out? 我做错了什么或错过了吗? How can i solve this problem in order to make it works. 我该如何解决此问题才能使其正常工作。

 document.getElementById("copyButton2").addEventListener("click", function() { copyToClipboardMsg(document.getElementById("copyTarget2"), "msg"); }); function copyToClipboardMsg(elem, msgElem) { var succeed = copyToClipboard(elem); } function copyToClipboard(elem) { // create hidden text element, if it doesn't already exist var targetId = "_hiddenCopyText_"; var isInput = elem.tagName === "INPUT" || elem.tagName === "TEXTAREA"; var origSelectionStart, origSelectionEnd; if (isInput) { // can just use the original source element for the selection and copy target = elem; origSelectionStart = elem.selectionStart; origSelectionEnd = elem.selectionEnd; } else { // must use a temporary form element for the selection and copy target = document.getElementById(targetId); if (!target) { var target = document.createElement("textarea"); target.style.position = "absolute"; target.style.left = "-9999px"; target.style.top = "0"; target.id = targetId; document.body.appendChild(target); } target.textContent = elem.textContent; } // select the content var currentFocus = document.activeElement; target.focus(); target.setSelectionRange(0, target.value.length); // copy the selection var succeed; try { succeed = document.execCommand("copy"); } catch(e) { succeed = false; } // restore original focus if (currentFocus && typeof currentFocus.focus === "function") { currentFocus.focus(); } if (isInput) { // restore prior selection elem.setSelectionRange(origSelectionStart, origSelectionEnd); } else { // clear temporary content target.textContent = ""; } return succeed; } 
 <textarea id="copyTarget2" style="display:none">dsfsdg</textarea> <button id="copyButton2">Copy</button> 

If you want to hide an element use visibility:hidden instead of display:none . 如果要隐藏元素,请使用visibility:hidden而不是display:none display:none removes the element. display:none删除元素。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM