1.2019 再聊移动端 300ms 延迟及 fastClick 原理解析
2.你那么牛,怎么不教我打iOS包?安排!
3.hbuilder接口执行异常
4.ç½ç«å¦ä½è°ç¨å¾®åç½ç«å¦ä½è°ç¨å¾®åç»å½
5.å¦ä½è·åç½ç«jså¾çå¦ä½è·åç½ç«jså¾ç
2019 再聊移动端 300ms 延迟及 fastClick 原理解析
移动端ms延迟及fastClick原理解析
移动端ms延迟问题源于浏览器为识别双击手势而等待的时间,最初在桌面端网页兴起时,为解决移动端适配和提高用户体验,移动端浏览器引入了双击缩放手势。句子源码模板然而,这种设计导致了移动端点击操作的延迟,延迟时间从ms到ms不等。
谷歌在移动版Chrome发布后,从Chrome 版本开始,对于移动端优化的网站,即使禁用了缩放功能,也解决了这一延迟问题。之后,企业cms源码Firefox、IE/Edge等浏览器也相继修复了此BUG。
解决移动端ms延迟问题的方法包括禁用缩放或在代码中添加特定处理。在Android WebView和iOS WebView中,处理方式与移动端浏览器一致,但iOS WebView中UIWebView与WKWebView的使用和特性也有所不同。UIWebView始终存在ms延迟问题,而WKWebView在iOS 9.3时解决了此问题。
fastClick库的原理在于在touchend事件发生时,阻止默认事件触发,然后通过创建MouseEvents并触发click事件来解决延迟问题。此外,fastClick在PC端不适用,需要通过notNeeded函数判断设备类型。语录系统源码
fastClick的使用需谨慎,特别是在iOS 9.3以上的WKWebView中,引入fastClick可能会带来额外风险和不必要的文件请求。适合自己的才是最好的,因此,在仅需对iOS 9.3以上WKWebView做适配的情况下,无需使用fastClick。
fastClick在解决移动端ms延迟问题上的贡献值得肯定,但是否继续使用需根据实际业务需求考虑。阅读优秀的源码可以提升编程审美和能力,但同时也需对其不足之处保持警惕。
你那么牛,怎么不教我打iOS包?安排!
点击上方亿元程序员+关注和★星标引言
Cocos如何更加顺利地打出iOS包 进入游戏开发行业,烟雨西游源码通过关注亿元程序员,你对游戏开发的认知逐渐增长。不少小伙伴通过阅读笔者的文章,成功独立完成了属于自己的游戏,并且上线。1. 小游戏打iOS包有哪些形式?
小游戏给包方式多样,与渠道打交道的小伙伴较为熟悉,主要介绍两种:H5
通过H5形式完成渠道SDK对接,具有跨平台优势。游戏研发无需了解原生Android或iOS内容,仅提供链接即可。 H5游戏打iOS包主要利用UIWebView或WKWebView等web视图容器,使游戏像传统原生应用程序一样运行在移动设备上。原生 发布iOS原生应用,舆情指标源码通常借助游戏引擎提供的工具,Cocos Creator亦不例外。2. Cocos Creator打iOS包流程
以Cocos Creator 3.8.3为例,分享如何顺利打出iOS包。环境
需要准备的环境包括安装电脑或虚拟机,以及通过App Store下载安装Xcode。打开构建工具
打开游戏项目,通过菜单栏Project->Build或快捷键shift+command+B,打开构建发布工具。新建构建任务
点击New Build Task新建任务。选择平台
在构建平台中选择iOS。设置Bundle Identifier
设置包名,测试时可自定义,正式上线需申请。设置屏幕方向
根据游戏情况调整。选择Developer Team
开始时可忽略,之后设置开发团队,自行前往。构建与生成
配置完成后,点击Build和Make生成Xcode工程和编译。 通过Run运行游戏。 或在生成Xcode工程后,使用Xcode打开工程进行调试或生成ipa。3. 打iOS包常见问题总结
以下是一些常见问题,建议收藏。未安装Xcode
首次导出工程时,可能提示未安装Xcode或命令行工具设置错误。确认安装后,设置工具路径,检查xcodebuild版本。Make报错
首次点击Make,查看Xcode工程解决。Xcode相关
首次打开工程运行按钮无法点击,安装Xcode版本后即可。开发团队
运行提示选择开发团队,输入苹果ID,没有的可申请。编译报错一
模板问题,点击右下角的Fix解决。编译报错二
结构变动,论坛搜索解决。通常涉及头文件更新。打提审包
设置后台申请游戏包名,导入证书,调整目标,完成归档打包上传或导出ipa。打越狱包
使用个人包名和开发团队,点击Product->Analyze打包,生成app,压缩zip为ipa。其他报错解决
关键信息搜索论坛或搜索引擎,类似问题广泛存在。结语
分享结束,如对您有帮助,欢迎分享、收藏、点赞和在看!更多源码可通过阅读原文获取。我是"亿元程序员",有着8年游戏行业经验,希望能提供帮助。 更多实用资源推荐:知识付费专栏
微信小游戏常用API整理
Cocos实例集锦
游戏开发框架打造
设计模式学习
贪吃蛇游戏开发系列
期待您的支持和关注!hbuilder接口执行异常
在使用HBuilder进行前端开发时,有时可能会遇到接口执行异常的情况。这可能是由于网络问题、接口错误、参数传递问题或其他原因引起的。下面将介绍如何解决HBuilder接口执行异常的问题。
hbuilder接口执行异常教程
1、在manifest.json“模块配置”,选择 “IOS UIWebview”。
2、在manifest.json源码视图 plus 中添加配置。
ç½ç«å¦ä½è°ç¨å¾®åç½ç«å¦ä½è°ç¨å¾®åç»å½
ç½ç«å¦ä½é¦å å®ç°è°ç¨å¨æå¾®åå®æ¶æ¶æ¯ï¼ä½ 说www.hkyanya.orgç«ãååçäºè¿ä¸ªç«çæºä»£ç æ件ï¼åç°æ»å¨çå¾®åæ¶æ¯å°±æ¯è°ç¨æ°æµªå¾®åæ¡æ¶ç代ç ãå¯ä»¥æå¼æ°æµªå¾®åçå·¥å ·ãå¨/plugins/WeiboShow.php'sâå¾®åç§âä¸è·å代ç å¤å¶æ¡æ¶ç代ç ï¼è¿å ¥ç½ç«åå°ã
æä¹ç¨qqç»å½å¾®åï¼
ä¸ãçµèç»å½ï¼
1ãæ们é¦å æå¼æµè§å¨ç¨æç´¢å¼ææ索微åï¼å°å¾®åçé¦é¡µæå¼ã
2ãä»å¾®åé¦é¡µç¹å»éæ©è´¦å·è®¾ç½®ã
3ãå¨è´¦å·è®¾ç½®é¡µé¢ä¸éæ©è´¦å·ç»å®ä¸é¡¹ã
4ãæ¥ä¸æ¥ç»å®å¥½èªå·±çqqå·å³å¯ã
5ãè¿æ ·æ们åç»å½å¾®åçæ¶åå°±å¯ä»¥ç¨qqç´æ¥ç»å½äºã
äºãææºç»å½ï¼
1ãå¨ææºä¸æå¼å¾®å客æ·ç«¯APPï¼å¨ç»å½é¡µé¢çä¸æ¹ï¼éæ©å ¶ä»ç»å½æ¹å¼ï¼ç¶åç¹å»âQQâæé®ã
2ãæ¥ä¸æ¥ï¼å¨æ°æå¼ç页é¢ä¸ï¼å°±ä¼è°ç¨ææºQQåºç¨ï¼éæ©èªå·±çQQè´¦å·ä¹åï¼ç¹å»âææ并ç»å½âæé®ã
3ãè¿æ ·å³å¯æåç»éæ°æµªå¾®å客æ·ç«¯ï¼å¹¶æµè§å¾®åå 容äºã
为ä»ä¹å¾®åéåºåè¿è½èªå¨ç»å½ï¼
å 为åªæ¸ é¤äºç»å½æ°æ®ï¼ä½æ¯uiwebviewçcookieä»ç¶ä¿çå¨æ¬å°ï¼æ以éè¦æ¸ é¤uiwebviewçcookieå 容ï¼æ¸ é¤æ¹å¼å¦ä¸ï¼
NSHTTPCookie*cookie;
NSHTTPCookieStorage*storage=;
for(cookiein){
}
2ï¼
ææ¡£ä¸å¯¹â强å¶ç»å½âæå¦ä¸æè¿°ï¼
âææ页ä¼é»è®¤è¯»åå½åç¨æ·çæ°æµªå¾®åç»å½ç¶æï¼å¦æä½ æ³è®©ç¨æ·éæ°ç»å½ï¼è¯·å¨è°ç¨authorizeæ¥å£æ¶ä¼ å ¥åæ°ï¼forcelogin=trueï¼é»è®¤ä¸å¡«åæ¤åæ°ç¸å½äºforcelogin=falseãâ
å¨è°ç¨ææ页é¢çWBAuthorize.mæ件ä¸çkWBAuthorizeURLæ¹ä¸º:
#definekWBAuthorizeURL@/oauth2/authorize?forcelogin=true
å¦ä½è·åç½ç«jså¾çå¦ä½è·åç½ç«jså¾ç
å¦ä½éè¿jsè·åç½é¡µä¸çææå¾ç并å å ¥ç¹å»äºä»¶å®ç°å è½½ç½é¡µæ¶ï¼è·åå¾ç并添å ç¹å»éè¿jsçè¯å«æ¹æ³ã-(void)webViewDidFinishLoad:(uiwebView*)webView{
[IDProgressHUDIDPlaceViewHideDirect:self.view]ï¼
//è¿éæ¯jsï¼ä¸»è¦ç®çæ¯è·åurlã
éæNSString*constjsGetImages=
@
varobjs=document.getElementsByTagName(img);varobjs=document.getelementsbytagname(
varimgScr=;varimgScr=;
for(varI=0ï¼æ
imgScr=imgScrobjs[i]ãsrc;
};
returnimgScr;è¿åimgScr
};
[webViewstringbyevaluationjavascriptfromstring:jsGetImages]ï¼//æ³¨å ¥jsæ¹æ³
nsstring*urlResurlt=[webViewstringbyevaluationjavascriptfromstring:@getImages()];
mUrlArray=[NSMutableArrayarraywitharray:[urlResurltcomponentsseparatedbystring:@]];
if(murlarray.count=2){
[mUrlArrayremoveLastObject]ï¼
}
//urlResurltæ¯ææè·åå¾ççURLçæ¼æ¥ï¼MUrlArrayæ¯ææURLçæ°ç»ã
//ç¹å»jsæ·»å å¾ç
[mWebViewstringbyevaluatingjavascriptfromstring:@å½æ°registimageclickaction(){
varimgs=document.getElementsByTagName(img);varimgs=document.getelementsbytagname(img
varlength=imgs.length;varlength=imgs.length
for(varI=0ï¼æi){
img=imgs[I]ï¼
img.onclick=function(){
window.location.href=å¾åé¢è§:this.src}
}
}
[mWebViewstringbyevaluatingjavascriptfromstring:@registimageclickaction()ï¼
}
//å¨è¿ä¸ªæ¹æ³ä¸ï¼æè·å¾åçç¹å»äºä»¶å被ç¹å»å¾åçurlã
-(BOOL)webView:(UIWebView*)webViewshouldStartLoadWithRequest:(NSURLRequest*)请æ±å¯¼èªç±»å:(UIWebViewNavigationType)导èªç±»å{
//é¢è§å¾ç
å¦æ(ã请æ±ãURL.schemeisequaltostring:@å¾åé¢è§å¾åé¢è§:
path=[pathstringbyaddingpercentescapesusingcoding:nsuTF8stringencoding]ï¼
//pathæ¯è¢«ç¹å»å¾åçurlã
è¿åå¦ï¼
}
è¿åYES
}
åªäºæ¹æ³å¯ä»¥è·åhttpä¸çcookieï¼
ä¸è¬çç½é¡µé½è½è·åãæ两ç§åæ³
1.å¨æµè§å¨çå°åæ è¾å ¥ï¼javascript:alert(document.cookie)(ä¸åºå大å°å)ï¼å°±ä¼å¼¹åºä½ å¨å½åç½é¡µç»å½çcookieä¿¡æ¯ã
2.æFè¿å ¥æµè§å¨çå¼åè 模å¼ââconsoleââå¨å½ä»¤è¡è¾å ¥javascript:alert(document.cookie)ï¼åå车
ç¨htmlunitæä¹å»è·åä¸ä¸ªæJSå è½½çç½é¡µä¿¡æ¯ï¼
æ两ç§æ¹å¼ä¾éæ©ææ¨è第ä¸ç§ï¼ä¸ï¼å»é 读ç¸å ³çç½é¡µéçjsåç½é¡µè¯·æ±ä¹åçheaderï¼éè¿handerç¥éè¿ä¸ªè·åè¿ä¸ªä¿¡æ¯çæ¥å£ãéè¿httpclientæ¥è·ç¥ä½ æ³è¦çä¿¡æ¯ã
äºï¼éè¿htmlunitæ¡æ¶æä¾çæ¹æ³ï¼JavascriptExecutorjsExecutor=(JavascriptExecutor)driver;jsExecutor.executeScript(LoginSubmit();,);è¿éçLoginSubmitå°±æ¯é¡µé¢éçjsæ¹æ³å称ï¼é¡µé¢éè¦æè¿ä¸ªjsæ¹æ³ï¼å½ç¶ä½ ä¹å¯ä»¥èªå·±åä¸äºjsï¼ãç¶åéè¿domæä½æ¥è·åä½ æ³è¦çä¿¡æ¯ã
html5æè JSææ ·è°ç¨ææºæå头æè ç¸åï¼
inputtype="file"accept="video/*;capture=camcorder">inputtype="file"accept="audio/*;capture=microphone">inputtype="file"accept="image/*;capture=camera">ç´æ¥è°ç¨ç¸æºinputtype="file"accept="image/*"/>è°ç¨ç¸æºå¾çæè ç¸åè¿æ¯è¦æ ¹æ®ææºçç±»åæ¥è¯´ï¼æäºææºåªè½è°ç¸æºï¼æäºææºåªè½è°ç¸åï¼æè 两è é½è¡ã以ä¸ï¼å¸æè½å¸®å©å°ä½ ã
ç¬è«å¦ä½è·åç½é¡µcssæ ·å¼ï¼
1ãéè¿ä¿åç½é¡µå³å¯è·åæ³è¦å¯¹åºé¡µé¢ä¸é¢çjsãcssæ件ï¼æçjsãcss被ç¼è¯æå缩è¿é¡»è¦åå©ç¬¬ä¸æ¹å·¥å ·æ¥åç¼è¯ææ ¼å¼åï¼
2ãæå¼æµè§å¨çå¼å模å¼ï¼ä¸è¬æå¿«æ·é®få°±å¯ä»¥æå¼ï¼ä»¥googleæµè§å¨ä¸¾ä¾ï¼ç¹å»æ ç¾resourceï¼ç¶åå¨å¯¹åºçèµæºæ件ä¸æ¾å°èªå·±éè¦çæ件åå³é®saveå³å¯ã
å¦ä½è·åä¸ä¸ªç½é¡µå®æ´çHTML代ç ï¼
å¨é¡µé¢ä¸å³å»æ¥çç½é¡µæºä»£ç å¯ä»¥å¾å°å¼å ¥çcssåjséè¦åç¬æ¾å°å¤å¶ä¸æ¥