Skip to content

Commit 99a06bb

Browse files
Merge pull request #518 from Reston/fix/copy-fallback-text-needed
Fix: fallback text needed to avoid breaking the browser
2 parents eeef7ba + 936ce25 commit 99a06bb

1 file changed

Lines changed: 8 additions & 4 deletions

File tree

src/lib/Functions/handleCopy.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
import { ClipboardEvent } from '../Model/domEventsTypes';
22
import { State } from '../Model/State';
3-
import { getDataToCopy } from './getDataToCopy';
43
import { getActiveSelectedRange } from './getActiveSelectedRange';
4+
import { getDataToCopy } from './getDataToCopy';
55
import { isBrowserSafari } from './safari';
66

77
export function handleCopy(event: ClipboardEvent, state: State, removeValues = false): State {
88
const activeSelectedRange = getActiveSelectedRange(state);
99
if (!activeSelectedRange) {
10-
return state;
10+
return state;
1111
}
1212
const { div } = getDataToCopy(state, activeSelectedRange, removeValues);
1313
copyDataCommands(event, state, div);
@@ -23,10 +23,14 @@ export function copyDataCommands(event: ClipboardEvent, state: State, div: HTMLD
2323
event.clipboardData.setData('text/html', div.innerHTML);
2424
} else if (supportNavigatorClipboard) {
2525
const clipboardItemData = {
26-
'text/html': div.innerHTML,
26+
'text/html': new Blob([div.innerHTML], { type: 'text/html' }),
27+
'text/plain': new Blob([div.textContent || ''], { type: 'text/plain' }),
2728
};
2829
const clipboardItem = new ClipboardItem(clipboardItemData);
29-
navigator.clipboard.write([clipboardItem]).then(() => ({}));
30+
31+
navigator.clipboard.write([clipboardItem]).catch((error) => {
32+
console.error("Error copying to clipboard: ", error);
33+
});
3034
} else {
3135
document.body.appendChild(div);
3236
div.focus();

0 commit comments

Comments
 (0)