要在 JavaScript 中實現複製文字,你可以使用 document.execCommand
方法或者 Clipboard API
。以下是兩種方法的示例:
使用 document.execCommand
方法:
function copyTextToClipboard(text) { var textArea = document.createElement("textarea"); textArea.value = text; // 將 textarea 元素新增到文件中 document.body.appendChild(textArea); // 選擇文字 textArea.select(); // 嘗試複製文字 document.execCommand("copy"); // 移除 textarea 元素 document.body.removeChild(textArea); }
使用 Clipboard API
:
function copyTextToClipboard(text) { navigator.clipboard.writeText(text) .then(() => { console.log('Text copied to clipboard'); }) .catch(err => { console.error('Error in copying text: ', err); }); }
在這兩種方法中,copyTextToClipboard
函式接受一個文字引數,並嘗試將其複製到剪貼簿中。你可以在需要的時候呼叫這個函式,並傳入你想要複製的文字。
當代碼中使用這個方法時
function copyTextToClipboard(text) { navigator.clipboard.writeText(text) .then(() => { console.log('Text copied to clipboard'); }) .catch(err => { console.error('Error in copying text: ', err); }); }
在其他電腦上透過ip地址訪問本機環境使用這個功能會報錯ncaught TypeError: Cannot read properties of undefined (reading 'writeText')
這個報錯是因為在某些瀏覽器中,navigator.clipboard.writeText
方法需要在安全上下文(例如HTTPS)下才能正常工作。如果你的網頁不是透過 HTTPS 協議訪問的話,這個方法可能會不可用。
另外,如果你的瀏覽器不支援 navigator.clipboard.writeText
方法,也會導致類似的報錯。
爲了解決這個問題,你可以在呼叫 navigator.clipboard.writeText
方法之前,先檢查一下瀏覽器是否支援該方法,以及當前頁面是否在安全上下文中。你可以使用以下程式碼進行檢查:
if (navigator.clipboard && navigator.clipboard.writeText) { // 呼叫 navigator.clipboard.writeText 方法 } else { // 處理瀏覽器不支援的情況 }
另外,確保你的網頁是透過 HTTPS 協議訪問的,以便在安全上下文中使用 navigator.clipboard.writeText
方法。