整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

Web前端:为什么HTML5对移动开发有用?

 HTML5改变了使用标记语言设计和构建网站的方式,使网站变得更加互动和智能。移动网站受益于这项令人敬畏的技术。事实上,智能手机用户享受着与台式机/笔记本电脑用户相同的浏览体验。

  在当今世界,人们对移动web和应用程序开发有着巨大的热情,这是因为用户群正在以惊人的速度增长。

  事实上,基于手机的互联网使用已经盖过传统的台式机/笔记本电脑浏览,HTML5已经成为移动开发竞赛中的领跑者。

  

  让我们仔细看看这种标记语言对移动开发有用的一些原因。

  l HLML5帮助开发人员生成更清晰和一致的代码,他们默认跨多个平台使用HTML5。这意味着相同的代码适用于iPhone、Android、BlackBerry、Windows Phone等平台。因此,它节省了开发成本,并帮助企业瞄准了庞大的客户群。

  l HTML5允许开发者创建高度响应的网站。它还可以检测已经浏览过的设备,并根据浏览器、屏幕分辨率和屏幕尺寸呈现网站的版本。因此,所有用户都能获得良好的浏览体验,无论他们使用何种设备浏览网站。

  l 除了HTML5,开发人员还利用了CSS3样式。基于CSS3的动画减小了应用程序的大小,从而提高了应用程序的速度,并减少了移动处理器的负载,从而提高设备的整体性能。

  l 借助对地理定位服务的支持,这项技术将web开发带到了一个新的高度。这基本上是跟踪用户的位置,并根据位置提供解决方案。例如,如果你正在寻找一个加油站,搜索结果会提供你附近的加油站。

  l 在当今时代,现代网站对音频和视频组件的需求和使用非常大。使用HTML5,你可以仅通过本机代码轻松集成丰富的音频和视频媒体。你不必使用闪光灯或银光在移动网站上播放视频。

  l 它从使用浏览器的输入类型发展而来。这可以处理更多的信息,允许用户浏览更多的内容。此外,下载JavaScript代码花费的时间更少,它还减少了到服务器的往返次数,这样,你可以在表单发布之前实现验证。

  使用HTML5进行移动开发需要开发人员具备高水平的技能和专业知识,这将帮助你获得完美的移动网站,兼容所有移动浏览器和智能手机平台。

如标题所说,这篇文章就是来告诉大家怎么去解决这个三个问题。

答案是使用JavaScript 中的navigator 对象。

  • 这个对象可以做很多事情

判断是否是安卓

  • var isAndroid = /Android/i.test(navigator.userAgent);

判断是否是IOS系统

  • var isIOS = /iPhone|iPad|iPod/i.test(navigator.userAgent);

判断是否是手机浏览器

  • var isMobile = /mobi/i.test(navigator.userAgent.toLowerCase());

  • console.log(isAndroid);

  • console.log(isIOS);

  • console.log(isMobile);

判断是否正常联网

  • navigator.onLine // true

让手机震动

  • 首先判断浏览器是否支持

  • var supportsVibrate = "vibrate" in navigator;

  • if(supportsVibrate){

  • // 振动1秒

  • navigator.vibrate(1000);

  • } else {

  • console.log('不支持震动');

  • }

  • 震动多次还可以传数组

  • // 参数分别是震动3秒,等待2秒,然后振动1秒

  • navigator.vibrate([3000, 2000, 1000]);

  • 如果想停止震动,你只需要向navigator.vibrate方法里传入0,或一个空数组:

  • navigator.vibrate(0);navigator.vibrate([]);

获取地理位置信息

  • navigator.geolocation.getCurrentPosition(); 在pc端使用误差挺大的。手机上测试经度还是不错的,当然还可以通过配置enableHighAcuracy设置为高经度模式,默认为false。

  • navigator.geolocation.getCurrentPosition(locationSuccess, locationError, {

  • enableHighAcuracy: true,

  • timeout: 5000,

  • maximumAge: 3000 });

  • 具体使用方法可以参见w3cshool中HTML5 地理定位 章节,用法还是很简单的。

友A:

我来说一个所遇到的诡异的坑。严格地讲不算是坑,但是比坑更坑100倍,因为你一旦遇到了,压根就没辙。

事情是这样的,公司有一个H5开发的游戏。开发、测试、运营一切正常。不久联运了,联运在合作方的平台上。谁想一上平台就不对了,具体的问题是完全找不出问题!在我们的服务器上一切工作正常,但是到合作方的服务上,在手机里怎么刷新就是不工作。由于生产版本是混淆并压缩的,所以在手机上调试及其痛苦。折腾了好几天一直还是黑屏。简直见了鬼了。老大做了好几年游戏,他说以前用主机托管的时代,开服都要给机器烧了香再送去机房。现在这个云服务器年代,没法给云服务器烧香开光啊,咋整?!

没法整,为了收入只能硬着头皮继续查。

终于一天,调试的小弟在safari 的远程console里面发现有一个js文件404了。但是这个js文件在CDN上存在的好好的,查了和刷了CDN节点,单独访问这个JS文件一切正常。 这个JS文件在我们自己的生产版本中也工作一起正常。就是在合作方的渠道里,用手机打开就404了。 把 404 具体错误信息 dump 下来,发给CDN供应商核对。CDN那里反馈挺快的,答:那个IP不是他们服务器!



见了鬼了!

把js文件改名,问题依旧,见了大鬼了

又折腾了一天,实在没辙了。死马当活马医,把JS 嵌到页面里,工作正常了。 然后反查那个404的 ip,发现对应托管网站是广告联盟。 但是我们压根没在游戏里面查广告啊。

实在摸不着头脑,问了各路朋友。有一个做PC页游的老大哥一语道破天机:

他说:“谁叫你们运营域名的名字里带 game 的。 被电信劫持了。

合作方的运营域名命中电信的劫持条件,我们的程序js文件被重定向到电信广告系统下的一个服务器上去。那个服务器在回吐这个js文件内容之前,会插一堆广告js代码到页面中。由于我们的游戏是用了一个 z-index:9999 的 canvas 绘制的。所以之前电信插入的广告被挡住了,谁也没发现。 直到那个广告服务坏掉的那天,页面就拉不出来了。

不要脸的电信!!!!

从此之后,我们所有的 js 文件全部改后缀名叫 css, 改 mimetype 叫 text/plain。

网友B:

说一下我遇到的吧:

1、最痛恨的是红米手机,ua返回iphone,需要结合platform判断,但是还不准确,导致需要ios和android区别对待的时候就坑了。

2、是fixed的问题。这个解决办法是尽量不要用,不过ios7及以下才会出现这个问题。某些情况下红米也会有这个问题。(最近刚刚遇到,已经被坑挂了)。

3、如果你想要使用css3的动画,那么一定要变着方式使用3d gpu加速的方式,不要试着left,height,width这样的元素进行变换了,android4.4以下版本卡死你。

4、ios全线点击会有300毫秒延迟,使用fastclick解决。这个插件最良心了。

5、web app像素眼设计会纠结你1px边框问题。

6、qq浏览,uc浏览以及ios的浏览器,滚动时不会触发scroll事件,但会触发touchmove。当停止滚动后会出发scroll。

7、滚动有iscroll插件,但是还是使用原生的比较好。

8、meta功能要用好,禁止缩放,缩放比例,屏蔽电话号码等功能很实用。(手机回答就不列举了)。

9、如果想要像手机淘宝那样的各个平台看起来展示效果一致,那么就使用rem来做单位。

10、-webkit-tap-highlight-color可以取消点击高亮。

11、localStorage在浏览器开启无痕模式下ios会抛异常,导致js中断。

12、一些情况下对非可点击元素监听click事件,ios下不会触发,css增加cursor:pointer就搞定了。当然想要干脆静止点击就是not-allowed。

13、android4.4以下版本,设置圆角属性需要在直接元素上,向父元素设置圆角并且指定overflow:hidden是不会生效的。

在做 iOS 和 Android 的 HTML5 开发时,你都掉到过哪些坑里呢?欢迎分享。