嗨,我有一条复制到剪贴板的指令。 但是我的朋友告诉我,它不适用于Safari(适用于chrome等)。 我没有办法测试。所以我希望你们能帮助我! :)
我的指令如下:
import { Directive, Input, Output, EventEmitter, HostListener } from '@angular/core';
@Directive({ selector: '[CopyToClipboard]' })
export class CopyClipboardDirective {
@Input('CopyToClipboard')
public payload: string;
@Output('copied')
public copied: EventEmitter<string> = new EventEmitter<string>();
@HostListener('click', ['$event'])
public onClick(event: MouseEvent): void {
event.preventDefault();
if (!this.payload) {
return;
}
const listener = (e: ClipboardEvent) => {
const clipboard = e.clipboardData || window['clipboardData'];
clipboard.setData('text', this.payload.toString());
e.preventDefault();
this.copied.emit(this.payload);
};
document.addEventListener('copy', listener, false);
document.execCommand('copy');
document.removeEventListener('copy', listener, false);
}
}
如何使其在Safari上运行?我没有使用Safari的经验。
预期结果:“将输入内容复制到剪贴板”
错误:“据我所知,它没有运行,但没有复制输入”
为什么它不是重复的,是因为我没有使用输入。我有一个字符串值,应该作为指令的输入到达。