최근 프론트엔드 프로젝트를 진행했는데, 입력이나 텍스트 영역의 값을 버튼을 통해 페이스트보드에 직접 복사해야 하는 작업이 있었습니다. 아래에서는 편집자가 내 구현 아이디어와 코드를 공유할 것이며, 이를 프로젝트에 직접 소개할 수 있습니다.
구체적인 코드는 다음과 같습니다.
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; }
이 메소드를 다음과 같이 직접 호출할 수 있습니다.
copyToClipboard(document.getElementById("name"));
이렇게 하면 ID 이름이 있는 값이 페이스트보드에 입력됩니다.
여기서 에디터가 콘텐츠를 페이스트보드에 복사하는 JavaScript 코드를 소개하겠습니다. 도움이 되셨으면 좋겠습니다!