#javascript #html #angular #typescript
Вопрос:
Я пытаюсь разрешить пользователю выбирать абзац и копировать его, когда он/она нажимает кнопку. В настоящее время мой код выглядит так, но он не выделяет текст и не копирует его. Я попытался импортировать директивы, но это приводило к ошибкам во время процесса импорта, поэтому я воспользовался приведенным ниже методом. Что не так с моим кодом?
HTML:
<p>
<span
id="sticker"
contenteditable
[textContent]="_stickerData?.StickerData"
(input)="onStickerDataChange($event.target.innerHTML)"
>
{{_stickerData?.StickerData}}
</span>
</p>
<button
mat-button
id="btnCopy"
matRipple
class="purple-500 fuse-white-fg mr-12"
(click)="copyText()"
>
Copy
</button>
тс:
copyText() {
const sticker = document.getElementById("sticker");
const btnCopy = document.getElementById("btnCopy");
btnCopy.onclick = () => {
document.querySelector("sticker");
document.execCommand("copy");
};
this._messages.Show("Copied", "SUCCESS", 3);
}
Ответ №1:
Пожалуйста, измените свой код на этот:
copyText(value: string) {
const selBox = document.createElement('textarea');
selBox.style.position = 'fixed';
selBox.style.left = '0';
selBox.style.top = '0';
selBox.style.opacity = '0';
selBox.value = value;
document.body.appendChild(selBox);
selBox.focus();
selBox.select();
document.execCommand('copy');
document.body.removeChild(selBox);
this._messages.Show("Copied", "SUCCESS", 3);
}
и html нужно немного изменить вместе с ним:
<button mat-button id="btnCopy" matRipple class="purple-500 fuse-white-fg mr-12" (click)="copyText(_stickerData?.StickerData)">Copy</button>
Я думаю, что это сработает в вашем случае 😀
Что делает эта функция? Просто: он создает невидимую текстовую область, копирует значение и в конце концов уничтожает его
Комментарии:
1. Здравствуйте, спасибо, но когда я вставляю его, он вставляет «неопределенный». Он не вставляет текст, который я хочу выбрать.
2. Я также добавлю html, подождите минутку 😡
3. Готово, посмотрим, поможет ли это вам
4. Если он все еще печатается неопределенным, вам нужно определить правильную переменную в html, где я изменил
5. Вы также 😀