#javascript #vue.js #select #google-chrome-extension #copy
Вопрос:
Я работаю над приложением vue с расширением chrome, где моя цель-скопировать содержимое раздела предварительных тегов в буфер обмена одним нажатием кнопки. Я определил идентификатор элемента для тега pre, чтобы я мог захватить содержимое с помощью метода copyToClipboard (). Мой код выглядит так:
<template>
<div>
<button @click="copyToClipboard()">Copy To Clipboard</button>
</div>
Метод определяется следующим образом:
methods : {
copyToClipboard() {
const textToCopy = document.getElementById('textToBecopied')
textToCopy.select()
document.execCommand('copy')
}
}
Я думаю, что метод выполняется правильно, но функция, которую я использую как .select, выдает ошибку, что это не функция. У кого-нибудь есть идея получше, чтобы достичь того, что я ищу?
Ответ №1:
HTMLInputElement.select()
Метод выбирает весь текст в <textarea>
элементе или в <input>
элементе, включающем текстовое поле.
document.getElementById('textToBecopied')
— это <pre>
стихия.
Используйте Node.textContent
, чтобы получить текст. И для копирования в буфер обмена — API буфера обмена.
Комментарии:
1. да «document.getElementById(‘textToBecopied’)» — это содержимое тега <pre>, которое я сохраняю в переменной textToCopy. Не уверен, где вы предлагаете использовать Node.textContent
2. @jfr01 , «document.getElementById(‘textToBecopied’)» — это не содержимое тега <pre>, а сам тег, у которого нет метода .select ().
Ответ №2:
Я решил эту проблему, получив содержимое предварительного тега и скопировав его в фиктивную текстовую область, а затем смог использовать метод выбора, а также функцию копирования в буфер обмена.
copyToClipboard() {
const copyText = document.getElementById('textToBecopied').textContent
const textArea = document.createElement('textarea')
textArea.textContent = copyText
document.body.append(textArea)
textArea.select()
document.execCommand('copy')
}