`
+ */
+const ZOOM_SELECTOR = '.vp-doc img:not(a img):not(.no-zoom)'
+
+/**
+ * 全站只保留一个 medium-zoom 实例,但【必须惰性创建】。
+ *
+ * 两个坑叠在一起,才得到这个写法:
+ *
+ * 1. 不能在模块顶层创建实例。medium-zoom 1.1.0 的工厂函数第一件事就是读
+ * `window.Promise`(dist/medium-zoom.min.js 里即 `var Promise = window.Promise || ...`),
+ * 而主题模块在 `vitepress build` 时会被 Node 端 SSR 打包并执行 —— 没有 window,
+ * 直接 `ReferenceError: window is not defined` 构建失败。
+ * 所以实例只能在浏览器生命周期回调里创建。
+ *
+ * 2. 也不能每次路由切换都 `mediumZoom(...)` 新建。每个实例都会在 document 上注册
+ * click / keyup / scroll、在 window 上注册 resize 监听器,且没有卸载入口
+ * (见 dist/medium-zoom.esm.js:576-581)。翻 N 个页面就会留下 N 组永不释放的
+ * 全局监听器。正确做法是复用实例,路由切换时只做 attach —— attach 内部会跳过
+ * 已挂载的图片(dist/medium-zoom.esm.js:199-204),因此重复调用是幂等的。
+ */
+let zoom: ReturnType
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 使用微信扫一扫即可打开小程序,体验公开查卡和卡片状态排查功能。
+
+
+
+
+
+
+
+