不过博客里包括了若干个平台的内容,之前的排版都千奇百怪,用 HTML 控制符不说,有的所有内容都在一行内,再加上中间有一段时间用微软的 Windows Live Writer 写的,总不是 markdown 友好的格式,甚至还有一些 * 或别的字符变成 markdown 控制符的情况,索性把所有内容都整理了一遍
再就是把历史的外链图片都想办法补到本地,包括之前用新浪微博当图床的,还好现在微博还在把相册下载到本地能匹配上,还有用人人当图床的,从我几年前备份的人人网数据里匹配到一些,但也有之前备份就有遗漏的找不到,还好从我自己的照片库,再把当年发文时配的原图人肉找到,在 Live Space 阶段的图,通过 OneDrive 的日志图片找到绝大部分,很诡异的有一张图不在这个目录,还好通过 OneDrive 按日期的照片墙,最终也找到了那张,在 Google Photo 的图现在还能访问,AI 就直接帮忙下载备份到本地了,有两张曾经传在教育网博客的无关紧要的示意图,找不到就算了,还有之前用 163 相册的图,就从自己的照片库里去匹配上,最终还有曾经在水木的一张图也不可能找到,就算了吧
在样式比对时,修复了部分代码块和引用块的问题,同时还发现历史一些应该是通过 Live Writer 发的旧文,是一个单行超大的 HTML 语法,曾经在 WordPress 上转 Markdown 应该也是转到懒得转,这次先把和引用块的临时处理下,后面应该可以借助 AI 的能力可以快速批量处理
不过,加上本地搜索功能后,开发环境需要的依赖还是不少的,从 AI 帮项目生成维护的 README 里就能看到
直接 input 输入可以改变 ko 绑定值,说明 ko 绑定没出问题,鼠标点选后 ko 绑定值不变,说明监听机制哪里有问题。因为这一波迁移里把原来多个版本混用的 ko 统一到了 3.x,先查是不是 ko 跨版本有监听事件的变化,ko 官网没说,某 AI 说 ko 3.x 开始还是现代浏览器有啥啥啥事件不再绑定,但尝试手工验证, $(el).trigger("input") 和 $(element).trigger("change") 这些明确说应该有效的,也不能让 ko.observable 的值更新
自己看业务代码和 datepicker 的代码(都是十年前自己写的),git 记录都显示没变啊,调试过程该有的事件都正常触发。把问题代码涉及的链路和表现丢给 Codex GPT-5.4 xhigh,一开始还说需要检查 ko 绑定机制和 vm 初始化顺序,但这些跟之前正常工作时都没变化。后面揪出来在 jinja2 模板层,渲染 HTML 时引入了两次不同版本的 jQuery,在 ko 绑定时用的第一版,后续 datepicker 初始化时关联到第二版,两边 $.event 不通?两套 jQuery 各自维护了自己的事件缓存和 handler 列表,所以 datepicker 库通过第二套 jQuery 发出的事件到不了 ko 在第一套 jQuery 上注册的 handler,而人肉改 input 里的内容走的浏览器原生 DOM 事件,ko 用的那一版 jQuery 有正常监听能生效。最终移除没必要多引入了一次的 jQuery 后,确保 Knockout.js 和 datepicker 使用的是同一版 jQuery 后恢复正常