У меня есть сегмент кода, который я хотел бы скопировать и затем вставить в HTML ридер (MS Word или Outlook).
Следует сохранить форматирование HTML, но не вставлять HTML как текст.
У меня есть три функции:
copyHTMLToClipboard(id:string): void {
const fromHtml = this._eRef.nativeElement.querySelector(id).innerHTML;
const newNode = this.render.createElement('div');
this.render.appendChild(this._eRef.nativeElement, newNode);
this.render.setProperty(newNode, 'innerHTML', fromHtml);
this._clipboardService.copyFromContent(fromHtml);
alert(fromHtml);
}
copyToClipboard(): void {
this._clipboardService.copyFromContent(this.buildFile());
}
copyMessage(val: string){
const selBox = document.createElement('textarea');
selBox.style.position = 'fixed';
selBox.style.left = '0';
selBox.style.top = '0';
selBox.style.opacity = '0';
selBox.value = val;
document.body.appendChild(selBox);
selBox.focus();
selBox.select();
document.execCommand('copy');
document.body.removeChild(selBox);
}
, вызываемые тремя кнопками:
<button mat-raised-button (click)="copyMessage(buildFile())" value="click to copy" >Copy</button>
<button mat-raised-button ngxClipboard (click)="buildFile();copyToClipboard()" >Copy</button>
<button mat-raised-button (click)="copyHTMLToClipboard('#ExistingUserBox')">Copy text</button>
buildFile () создает строку кода HTML ниже, поэтому может быть сохранен как файл .htm.
Кнопки / функции пытаются копировать:
<div class="innerbox layoutbox" id="ExistingUserBox" #ExistingUserBox >
<div class="col editorbox" style="font-family: Lato, Arial, Helvetica, sans-serif; font-size: 12pt; font-weight:400; color:#464646; line-height: 16pt;">
<div style="font-family: Lato, Arial, Helvetica, sans-serif; font-size: 12pt; font-weight:400; color:#464646; line-height: 16pt;" >{{Employee_Name}}</div>
<div style="font-family: Lato, Arial, Helvetica, sans-serif; font-size: 10pt; font-weight:400; color:#464646; line-height: 12pt;">{{Employee_Phone}}</div>
</div>
</div>
Все три функции успешно получают HTML в виде текстовой строки, но когда я вставьте его, я получаю всю разметку HTML, а не только форматирование.
Я просмотрел:
Javascript - скопировать весь код html в буфер обмена
Копировать html в буфер обмена (Angular)
и хотя они ссылаются на код, аналогичный тому, что я делаю, ни один из них не отвечает на вопрос, как получить отформатированный код html в буфер обмена.
Я хочу получить это: Джон Доу 123-4567
Вместо того, чтобы получить это:
<div class="innerbox layoutbox" id="ExistingUserBox" #ExistingUserBox >
<div class="col editorbox" style="font-family: Lato, Arial, Helvetica, sans-serif; font-size: 12pt; font-weight:400; color:#464646; line-height: 16pt;">
<div style="font-family: Lato, Arial, Helvetica, sans-serif; font-size: 12pt; font-weight:400; color:#464646; line-height: 16pt;" >John Doe</div>
<div style="font-family: Lato, Arial, Helvetica, sans-serif; font-size: 10pt; font-weight:bold; color:#002a5f; line-height: 12pt;">123-4567</div>
</div>
</div>