切換語言為:簡體

JavaScript實現複製文字操作

  • 爱糖宝
  • 2024-10-25
  • 2035
  • 0
  • 0

要在 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 方法。

0則評論

您的電子郵件等資訊不會被公開,以下所有項目均必填

OK! You can skip this field.