问题:iOS WebKit 永远不派发 contextmenu(WebKit bug 213953),长按图片只弹系统 callout,导致"我的图片"页的自定义菜单在 iPhone/iPad 上完全不可用 (resources/js/context-js.js 的菜单只挂在 contextmenu 上)。 改动: - overlay/context-js.js:纯增量补丁。新增仅 iOS 生效的长按分支(touchstart+500ms, 移动 >10px / 多指 / 短按都取消),复用原本的开菜单逻辑(beforeOpen/afterOpen 照旧); 注入 -webkit-touch-callout:none 压掉原生菜单(只作用于本库绑定的元素范围); 抬手吞掉 iOS 补发的 click,避免长按后误开图片预览;长按与 contextmenu 之间 700ms 去重。 判定只在 iPad/iPhone/iPod(含 iPadOS 伪装的 MacIntel+maxTouchPoints>1)为真, Android / Windows / 真 Mac(含 M 系列,maxTouchPoints=0)一行新代码都不执行。 - overlay/images.blade.php:只给脚本加 ?v=ios-longpress,绕开 Safari 的启发式缓存 - Dockerfile:源码钉死 911275c(= 2024-04-29 那版线上镜像使用的 master HEAD); 基础镜像显式 bookworm;install-php-extensions 钉版本;构建期两处 md5 自证 - .github/workflows/build-image.yaml:替换上游的定时构建,改推 GHCR + 构建后真机自证 (核 md5、记录 PHP/扩展/Debian、真起容器 curl 安装页) - test/:node + jsdom 行为测试(23 项,覆盖 iOS/iPad/Mac/Android/Windows 五类场景) - README:补丁原理、跨平台隔离说明、升级/回滚步骤(含"换镜像不会更新已有卷代码"这个坑) 致谢与许可保留上游全部署名与 LICENSE(AGPL-3.0)。
39 lines
1.1 KiB
YAML
39 lines
1.1 KiB
YAML
version: '3'
|
|
services:
|
|
lskypro:
|
|
# 本 fork 的镜像(含 iOS 长按菜单修复)
|
|
image: ghcr.io/mole404/lsky-pro-docker:latest
|
|
restart: unless-stopped
|
|
hostname: lskypro
|
|
container_name: lskypro
|
|
environment:
|
|
- WEB_PORT=8089
|
|
volumes:
|
|
- $PWD/web:/var/www/html/
|
|
ports:
|
|
- "9080:8089"
|
|
networks:
|
|
- lsky-net
|
|
|
|
# 注:arm64的无法使用该镜像,请选择sqlite或自建数据库
|
|
mysql-lsky:
|
|
image: mysql:5.7.22
|
|
restart: unless-stopped
|
|
# 主机名,可作为"数据库连接地址"
|
|
hostname: mysql-lsky
|
|
# 容器名称
|
|
container_name: mysql-lsky
|
|
# 修改加密规则
|
|
command: --default-authentication-plugin=mysql_native_password
|
|
volumes:
|
|
- $PWD/mysql/data:/var/lib/mysql
|
|
- $PWD/mysql/conf:/etc/mysql
|
|
- $PWD/mysql/log:/var/log/mysql
|
|
environment:
|
|
MYSQL_ROOT_PASSWORD: lAsWjb6rzSzENUYg # 数据库root用户密码,自行修改
|
|
MYSQL_DATABASE: lsky-data # 可作为"数据库名称/路径"
|
|
networks:
|
|
- lsky-net
|
|
|
|
networks:
|
|
lsky-net: {} |