copyHtmlAndPlainToClipboard
同时写入 text/html(wire format)与 text/plain(可还原元数据),便于 IM 富文本粘贴回编辑器。
环境要求
- 浏览器环境;内部使用
globalThis的ClipboardItem、navigator.clipboard.write、document.execCommand。 - 需支持
ClipboardItem+Blob才能双格式写入;否则回退 HTML 或纯文本方案。
函数签名
typescript
function copyHtmlAndPlainToClipboard(html: string, plain: string): Promise<boolean>参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
html | string | 是 | wire HTML 片段 |
plain | string | 是 | 可还原 plain(通常来自 materializeImRichHtmlToRestorablePlainText) |
二者皆空时返回 false。
返回值
| 类型 | 说明 |
|---|---|
Promise<boolean> | 任一策略成功即为 true |
工作原理
- ClipboardItem:同时写入
text/html与text/plain两个 Blob。 - 回退 HTML:
contentEditable临时节点 + 选区 +execCommand('copy'),保留选区状态。 - 回退 plain:调用 copyTextToClipboard 仅写纯文本。
- 按优先级尝试,全部失败返回 false。
异常
无异常抛出。