MCPcopy
hub / github.com/zxlie/FeHelper / copyChartToClipboard

Function copyChartToClipboard

apps/chart-maker/main.js:635–678  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

633
634 // 复制图表到剪贴板
635 function copyChartToClipboard() {
636 const chartWrapper = document.getElementById('chart-wrapper');
637
638 // 创建加载指示器
639 const loadingOverlay = document.createElement('div');
640 loadingOverlay.className = 'loading-overlay';
641 loadingOverlay.innerHTML = '<div class="loading-spinner"></div>';
642 chartWrapper.appendChild(loadingOverlay);
643
644 setTimeout(() => {
645 html2canvas(document.getElementById('chart-canvas'), {
646 backgroundColor: '#ffffff',
647 scale: 2
648 }).then(canvas => {
649 // 移除加载指示器
650 loadingOverlay.remove();
651
652 canvas.toBlob(blob => {
653 try {
654 // 尝试使用现代API复制到剪贴板
655 if (navigator.clipboard && navigator.clipboard.write) {
656 const clipboardItem = new ClipboardItem({'image/png': blob});
657 navigator.clipboard.write([clipboardItem])
658 .then(() => {
659 showNotification('图表已复制到剪贴板');
660 })
661 .catch(err => {
662 legacyCopyToClipboard(canvas);
663 });
664 } else {
665 legacyCopyToClipboard(canvas);
666 }
667 } catch (e) {
668 legacyCopyToClipboard(canvas);
669 }
670 });
671 }).catch(error => {
672 // 移除加载指示器
673 loadingOverlay.remove();
674
675 showNotification('复制图像失败,请重试', true);
676 });
677 }, 100);
678 }
679
680 // 兼容性较好的复制方法(通过创建临时链接)
681 function legacyCopyToClipboard(canvas) {

Callers 1

main.jsFile · 0.85

Calls 4

setTimeoutFunction · 0.85
legacyCopyToClipboardFunction · 0.85
removeMethod · 0.80
showNotificationFunction · 0.70

Tested by

no test coverage detected