Files
websopy-taro/.workbuddy/memory/2026-06-30.md
赵忠林 dd183adaab fix(utils): 优化小程序端复制文本功能体验
- 小程序端直接调用原生 wx.setClipboardData,避免 Taro Promise 封装问题
- 避免微信小程序重复显示复制成功提示和误报复制失败
- 失败时仅在小程序端输出错误日志,非小程序端显示提示
- 修改首页外链跳转逻辑,支持相对路径跳转,小程序内外链复制提示提升用户体验
- 更新项目内剪切板使用规范文档,说明复制行为调整及符合相应规范要求
2026-06-30 18:10:29 +08:00

3.3 KiB
Raw Blame History

修复 WXSS 不兼容的 .!visible CSS 选择器

  • 问题: Tailwind JIT 引擎把 JS 代码 if (!visible) 误识别为 !visible important 修饰符类名,生成 .\!visible CSS 选择器WXSS 不支持反斜杠转义的 !
  • 修复: 创建 PostCSS 插件 postcss-remove-tailwind-important.js 移除所有 .\!xxx 选择器
  • 配置: 更新 postcss.config.js 引入该插件(使用函数引用方式,非字符串模块名)
  • 验证: 构建通过,.\!visible 从输出中移除,.visible 保留
  • 注意: 项目中实际无人使用 Tailwind 的 ! 修饰符类名,安全移除。将来若需使用,需创建对应 WXSS 兼容类名

替换项目中不兼容 WXSS 的 space-x/y-* 类名

  • 问题: space-y-* / space-x-* 依赖 :not() + ~ + CSS 变量 + 嵌套 calc()WXSS 不兼容
  • 修复:
    • 源码中将所有 space-y-* 替换为 flex flex-col gap-*
    • 注释中的 space-y-* 也一并替换,防止 Tailwind JIT 误扫描生成
    • 扩展 PostCSS 插件为 postcss-remove-wxss-incompatible.js,一并移除 space-*divide-* 规则
    • 删除旧的 postcss-remove-tailwind-important.js 文件
  • 涉及文件: dealer/qrcode/index.tsx, dealer/invite-stats/index.tsx, components/QRScanModal.tsx
  • 验证: 构建通过,所有不兼容选择器已从输出中移除

审查并修复剪切板接口合规问题

  • 问题: 用户截图显示「复制成功」与系统「内容已复制」重复 Toast担心违反 5.15.4 剪切板接口滥用规范
  • 审查结果:
    • 所有复制操作均为用户点击触发,无 getClipboardData 自动读取
    • 无复制后强制跳转或中断业务流程
    • 当前实现基本合规,主要问题是重复 Toast 影响体验
  • 修复: 更新 src/utils/common.ts 中的 copyText 函数小程序端不再显示自定义「复制成功」Toast由系统自带提示替代
  • 验证: weapp 构建通过

修复首页「复制失败」Toast 问题

  • 问题: 微信审核反馈小程序打开首页提示「复制失败」,截图显示该 Toast 来自产品矩阵页面
  • 分析:
    • 首页无生命周期自动复制,复制均由用户点击触发
    • 「立即开通」按钮点击后通过 copyText 复制外链,copyTextfail 回调会弹「复制失败」Toast
    • 部分机型/场景下 Taro.setClipboardData 可能误报失败,导致审核不通过
  • 修复:
    • 更新 src/utils/common.tscopyText:小程序端直接调用原生 wx.setClipboardData,失败时只 console.error 不弹 Toast
    • 优化 src/pages/index/index.tsxopenMaybeLink:相对路径改为 Taro.navigateTo 跳转,仅外链复制
    • 「了解模板/插件市场」按钮不再调用 openMaybeLink('/market'),仅保留提示 Toast
  • 验证: weapp 构建通过dist 中不再包含「复制失败」字符串

修复 wx 全局变量 TypeScript 红色警告

  • 问题: src/utils/common.ts 中使用 wx.setClipboardDataTypeScript 报「Cannot find name 'wx'」红色警告
  • 原因: 项目没有声明微信小程序原生全局对象 wx 的类型
  • 修复: 在 types/global.d.ts 中添加 declare const wx: any; 全局类型声明
  • 验证: tsc 不再报 common.ts 相关错误,npx taro build --type weapp 构建成功