diff --git a/preload.js b/preload.js index af52ab3..ac4d16f 100644 --- a/preload.js +++ b/preload.js @@ -22,13 +22,11 @@ contextBridge.exposeInMainWorld('electronAPI', { // Events from main process onFileOpenInTab: (callback) => ipcRenderer.on('file:openInTab', (event, data) => callback(data)), - onFileOpened: (callback) => ipcRenderer.on('file:opened', (event, data) => callback(data)), onMenuSave: (callback) => ipcRenderer.on('menu:save', () => callback()), onMenuSaveAs: (callback) => ipcRenderer.on('menu:saveAs', () => callback()), onViewModeChange: (callback) => ipcRenderer.on('menu:viewMode', (event, mode) => callback(mode)), onExternalModification: (callback) => ipcRenderer.on('file:externallyModified', (event, filePath) => callback(filePath)), onConfirmClose: (callback) => ipcRenderer.on('window:confirmClose', () => callback()), - onClosing: (callback) => ipcRenderer.on('window:closing', () => callback()), // Remove listeners removeAllListeners: (channel) => ipcRenderer.removeAllListeners(channel) diff --git a/renderer/renderer.js b/renderer/renderer.js index 1e4b010..0a86d10 100644 --- a/renderer/renderer.js +++ b/renderer/renderer.js @@ -120,13 +120,15 @@ // ===== Markdown Rendering ===== function renderMarkdown(text) { if (typeof marked === 'undefined') { - preview.innerHTML = '

错误: Markdown 解析库未加载

'; + preview.textContent = '错误: Markdown 解析库未加载'; + preview.style.color = 'red'; return; } try { preview.innerHTML = marked.parse(text); } catch (e) { - preview.innerHTML = '

渲染错误: ' + e.message + '

'; + preview.textContent = '渲染错误: ' + e.message; + preview.style.color = 'red'; } } @@ -468,7 +470,7 @@ a.href = URL.createObjectURL(blob); a.download = tab.filePath || 'untitled.md'; a.click(); - URL.revokeObjectURL(a.href); + setTimeout(() => URL.revokeObjectURL(a.href), 1000); tab.isModified = false; renderTabBar(); updateTitle(); @@ -739,7 +741,6 @@ if (typeof window.electronAPI !== 'undefined') { // Remove old listeners first to prevent stacking window.electronAPI.removeAllListeners('file:openInTab'); - window.electronAPI.removeAllListeners('file:opened'); window.electronAPI.removeAllListeners('menu:save'); window.electronAPI.removeAllListeners('menu:saveAs'); window.electronAPI.removeAllListeners('menu:viewMode'); @@ -749,11 +750,6 @@ createNewTab(data.filePath, data.content); }); - // Legacy: file opened via old dialog - window.electronAPI.onFileOpened((data) => { - createNewTab(data.filePath, data.content); - }); - window.electronAPI.onMenuSave(() => handleSave()); window.electronAPI.onMenuSaveAs(() => handleSaveAs()); window.electronAPI.onViewModeChange((mode) => setViewMode(mode));