From 5a3dff9026bc641329b11f3aeb97acb8eb80d228 Mon Sep 17 00:00:00 2001 From: qing <1776177662@qq.com> Date: Sun, 2 Aug 2026 11:46:51 +0800 Subject: [PATCH 1/2] =?UTF-8?q?fix(static):=20=E4=BF=AE=E5=A4=8Ddnfs?= =?UTF-8?q?=E5=AF=BC=E8=88=AA=E6=A0=88=E6=B1=A1=E6=9F=93=E4=B8=8E=E8=BF=94?= =?UTF-8?q?=E5=9B=9E=E9=94=AE=E6=A0=88=E7=A9=BA=E8=B6=8A=E7=95=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 点卡片/返回上一层前先经 confirmLeaveIfDirty 守卫确认,用户选择 不放弃输入时不再执行 push/pop,stack 保持原样 - 返回键目标 id 判断由 length>=0(恒真,空栈取到 undefined)改为 length>0,空栈正确回根节点 0 --- static/public/js/dnfs.js | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/static/public/js/dnfs.js b/static/public/js/dnfs.js index 0ac94ca..2589c4f 100644 --- a/static/public/js/dnfs.js +++ b/static/public/js/dnfs.js @@ -772,6 +772,18 @@ function cancelEdit() { resetTextareaHeight(); /* 恢复初始高度 */ } +/* 导航守卫:表单有未提交内容时先 confirm;确认放弃则清空表单放行,否则本次导航不执行。 + * 必须在调用方修改 stack 之前调用(点卡片 push 前 / 返回上一层 pop 前), + * 否则用户选择"不放弃"时 stack 已被改动,后续导航与新增节点的 pid 全部错位 */ +function confirmLeaveIfDirty() { + if (input_note_title.value == "" && input_note_content.value == "") return true; + if (confirm("是否放弃当前输入的内容?") == false) return false; + input_note_title.value = ""; + input_note_content.value = ""; + cancelEdit(); + return true; +} + function load_notes(main_node) { /* 这个不能设置为空的 */ @@ -802,6 +814,7 @@ function load_notes(main_node) { let card = document.createElement('div'); card.className = "card"; card.addEventListener('click', function(event) { + if (!confirmLeaveIfDirty()) return; /* 未放弃输入则不跳转,stack 保持原样 */ var id = Number(item.id) stack.push(id) getNode(id).then(load_notes) @@ -904,8 +917,10 @@ function loadMap(children_json) { back.className = "tag back"; back.textContent = "← 返回上一层"; back.addEventListener("click", () => { + if (!confirmLeaveIfDirty()) return; /* 未放弃输入则不返回,stack 保持原样 */ stack.pop(); - var id = (stack.length >= 0) ? stack[stack.length - 1] : 0; + /* 栈空(回到根)时取 0:原判断 stack.length >= 0 恒真,空栈取 stack[-1] 得 undefined */ + var id = (stack.length > 0) ? stack[stack.length - 1] : 0; getNode(id).then(load_notes); getNode(id).then(loadMap); }); From 2e210e4729ae1c177fdc2127d0ebe246798d7ee1 Mon Sep 17 00:00:00 2001 From: qing <1776177662@qq.com> Date: Sun, 2 Aug 2026 11:49:42 +0800 Subject: [PATCH 2/2] =?UTF-8?q?chore(db):=20gitignore=20=E5=BF=BD=E7=95=A5?= =?UTF-8?q?=20SQLite=20WAL/SHM=20=E8=BF=90=E8=A1=8C=E6=97=B6=E4=B8=B4?= =?UTF-8?q?=E6=97=B6=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/.gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/db/.gitignore b/db/.gitignore index c682457..a0448bb 100644 --- a/db/.gitignore +++ b/db/.gitignore @@ -1,5 +1,7 @@ #prjs *.db +*.db-shm +*.db-wal *.bin *.build *.dist