js中如果遇到低版本安卓设备调用setTimeout不生效解决办法
2023-09-14 09:07:44 时间
工作中会遇到低版本安卓设备调用setTimeout不生效,既不会报错,里面的函数也不会执行,这里po一个解决办法,如果不执行则执行安卓自己封装的原生的setTimeout方法:sdk.setTimeout。
注明:此方法为我们老大所写,放在这里惠存一下。
基本方案
/*******/ (function(window){ Promise.race([ new Promise((resolve)=>{ window.setTimeout(()=>{ resolve(window.setTimeout) },0) }), new Promise((resolve)=>{ sdk.setTimeout(()=>{ resolve(sdk.setTimeout.bind(sdk)) },100) }) ]).then((fn)=>{ window.setTimeout = fn }) })(window) window.setTimeout(()=>{ cosole.log('hello world') },1000) 进阶方案 /*******/ (function(window){ const st = window.setTimeout.bind(window) let callList = [] window.setTimeout = function(cb, duration){ callList.push(cb) return st(cb, duration) } Promise.race([ new Promise((resolve)=>{ window.setTimeout(()=>{ resolve(()=>{ return st }) },0) }), new Promise((resolve)=>{ sdk.setTimeout(()=>{ resolve(()=>{ callList.forEach(fn=>{ sdk.setTimeout(fn, duration) }) window.clearTimeout = sdk.clearTimeout.bind(sdk) return sdk.setTimeout.bind(sdk) }) },100) }) ]).then((fn)=>{ window.setTimeout = fn() }) })(window)
相关文章
- 安卓手机上怎么设置天数倒计时?
- 安卓手机便签上怎么设置显示提醒事项倒数日?
- 安卓手机怎么设置日常提醒打卡?
- 什么叫wipe,安卓用户如何去wipe?
- ①计划中的安卓学习
- 爬虫工程师到底为什么要学习安卓逆向?
- EasyPusher RTSP推流/EasyRTMP RTMP推流Android安卓摄像头视频偏暗的问题解决方案
- EasyPusher安卓Android手机直播推送之RTSP流媒体协议流程
- 安卓逆向7,frida小练习,hook java 层密码校验函数,绕过密码验证,进入下一个界面
- uniapp小程序 安卓和ios时间兼容性问题解决方案demo(整理)
- js 判断通过什么打开(安卓、苹果、微信、QQ、浏览器、某个app应用…)
- js破解和安卓逆向文章
- 安卓移动端调用自然语言处理nlp模型【示例+源码】
- Q&A:GMS认证、CTS测试、GTS测试、谷歌认证、安卓认证,Android
- [RK3399平台开发系列讲解(系统修改记录篇)1.1、安卓界面如何去掉顶部Google搜索栏
- 安卓UTC与时间日期互转方法