From 07989db28e6283eb55a56083ebec44d0b1d3ad88 Mon Sep 17 00:00:00 2001 From: thzxx Date: Mon, 18 May 2026 14:16:34 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E9=99=90=E5=88=B6=E5=8F=AA=E8=83=BD?= =?UTF-8?q?=E6=89=93=E5=BC=80=20md/txt=20=E6=96=87=E4=BB=B6=EF=BC=8C?= =?UTF-8?q?=E6=96=B0=E5=BB=BA=E6=96=87=E4=BB=B6=E4=BB=85=E4=BF=9D=E5=AD=98?= =?UTF-8?q?=E4=B8=BA=20md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 打开对话框移除「所有文件」选项 - 保存对话框移除 .txt 选项 - 拖拽打开增加扩展名过滤 - 浏览器降级路径同步过滤 --- main.js | 9 +++------ renderer/renderer.js | 5 +++++ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/main.js b/main.js index ef3d7f7..86d3d24 100644 --- a/main.js +++ b/main.js @@ -90,8 +90,7 @@ async function showOpenDialog() { const result = await dialog.showOpenDialog(mainWindow, { properties: ['openFile'], filters: [ - { name: 'Markdown 文件', extensions: ['md', 'markdown', 'txt'] }, - { name: '所有文件', extensions: ['*'] } + { name: 'Markdown 文件', extensions: ['md', 'markdown', 'txt'] } ] }); if (!result.canceled && result.filePaths.length > 0) { @@ -169,8 +168,7 @@ ipcMain.handle('file:save', async (event, { filePath, content }) => { } else { const result = await dialog.showSaveDialog(mainWindow, { filters: [ - { name: 'Markdown 文件', extensions: ['md'] }, - { name: '文本文件', extensions: ['txt'] } + { name: 'Markdown 文件', extensions: ['md'] } ] }); if (!result.canceled) { @@ -192,8 +190,7 @@ ipcMain.handle('file:saveAs', async (event, { content }) => { try { const result = await dialog.showSaveDialog(mainWindow, { filters: [ - { name: 'Markdown 文件', extensions: ['md'] }, - { name: '文本文件', extensions: ['txt'] } + { name: 'Markdown 文件', extensions: ['md'] } ] }); if (!result.canceled) { diff --git a/renderer/renderer.js b/renderer/renderer.js index 4be9963..38c8603 100644 --- a/renderer/renderer.js +++ b/renderer/renderer.js @@ -429,6 +429,8 @@ input.multiple = true; input.onchange = (e) => { Array.from(e.target.files).forEach(file => { + const ext = file.name.substring(file.name.lastIndexOf('.')).toLowerCase(); + if (!['.md', '.markdown', '.txt'].includes(ext)) return; const reader = new FileReader(); reader.onload = (ev) => { createNewTab(file.name, ev.target.result); @@ -584,8 +586,11 @@ dropOverlay.classList.add('hidden'); const files = e.dataTransfer.files; + const allowedExts = ['.md', '.markdown', '.txt']; for (const file of files) { const filePath = file.path; + const ext = filePath ? filePath.substring(filePath.lastIndexOf('.')).toLowerCase() : ''; + if (!allowedExts.includes(ext)) continue; if (filePath && typeof window.electronAPI !== 'undefined') { const result = await window.electronAPI.readFile(filePath); if (result.success) {