ios input 键盘收起页面底部有间隙没有自动还原
1.ios input 键盘收起页面底部有间隙没有自动还原
解决办法: 最外层元素增加fixed 布局即可
2. ios input输入 页面会放大,收起时页面不自动还原
解决办法 input 字体设置最小为16px即可
3.网页标签切换获取切换状态
解决办法: 最外层元素增加fixed 布局即可
2. ios input输入 页面会放大,收起时页面不自动还原
解决办法 input 字体设置最小为16px即可
3.网页标签切换获取切换状态
document.addEventListener("visibilitychange", visibleChangeFun);
const visibleChangeFun= ()=>{
if (document.visibilityState === "hidden"){
//隐藏
}
if (document.visibilityState === "hidden"){
//隐藏
}
}
4.倒计时要用本地时间处理,不然切页面定时器不执行,时间不准确,以及离开标签页,或息屏用 document.visibilityState === "hidden" 判断,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | const [timeLeft, setTimeLeft] = useState<any>(); const [startTime, setStartTime] = useState<any>( new Date().getTime()); const hideTimeRef = useRef<any>(); const timeLeftRef = useRef<any>(); useEffect(() => { timer = setInterval(() => { setTimeLeft((prevTimeLeft: number) => prevTimeLeft - 1000); }, 1000); return () => { clearInterval(timer); }; }, [expires]); useEffect(() => { if (expires) { setTimeLeft(expires); setStartTime( new Date().getTime()); } }, [expires]) useEffect(() => { if (timeLeft + startTime <= new Date().getTime()) { 也可以直接用timeLeft<=0 判断即可 timer && clearInterval(timer); } }, [timeLeft]); useEffect(() => { //监听ios息屏 const visibleChangeFun = function () { if (document.visibilityState === "hidden" ) { // 息屏时主动关闭定时器,并记录当前时间 clearInterval(timer); hideTimeRef.current = getTimeNow() timeLeftRef.current = timeLeft } else { console.log( 'visible show :' ); // 用户打开手机进入页面时,记录当前时间,计算出息屏期间的时间,并重新启动定时器 const showTime = getTimeNow(); const diffTime = showTime - hideTimeRef.current; // 假设 countdown 是剩余倒计时时间 // countdown -= diffTime; if (timeLeftRef.current - diffTime > 0) { setTimeLeft(timeLeftRef.current - diffTime); visibleStatusTimer = setInterval( function () { // 更新倒计时逻辑 setTimeLeft((prevTimeLeft: number) => prevTimeLeft - 1000); }, 1000); } else { setTimeLeft(0); } } } document.addEventListener( "visibilitychange" , visibleChangeFun); return () => { document.removeEventListener( "visibilitychange" , visibleChangeFun); clearInterval(visibleStatusTimer); } }, [timeLeft]) |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步