fix:compatible with browsers that do not support ClipboardItem #108

This commit is contained in:
Hufe921
2023-01-04 22:33:18 +08:00
parent a369adbe32
commit 196f638318
2 changed files with 23 additions and 7 deletions
+21 -6
View File
@@ -9,12 +9,27 @@ export function writeClipboardItem(text: string, html: string) {
if (!text || !html) return
const plainText = new Blob([text], { type: 'text/plain' })
const htmlText = new Blob([html], { type: 'text/html' })
// @ts-ignore
const item = new ClipboardItem({
[plainText.type]: plainText,
[htmlText.type]: htmlText
})
window.navigator.clipboard.write([item])
if (window.ClipboardItem) {
// @ts-ignore
const item = new ClipboardItem({
[plainText.type]: plainText,
[htmlText.type]: htmlText
})
window.navigator.clipboard.write([item])
} else {
const fakeElement = document.createElement('div')
fakeElement.setAttribute('contenteditable', 'true')
fakeElement.innerHTML = html
document.body.append(fakeElement)
// add new range
const selection = window.getSelection()
const range = document.createRange()
range.selectNodeContents(fakeElement)
selection?.removeAllRanges()
selection?.addRange(range)
document.execCommand('copy')
fakeElement.remove()
}
}
export function writeElementList(elementList: IElement[], options: DeepRequired<IEditorOption>) {