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);
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 开发时,你都掉到过哪些坑里呢?欢迎分享。
*请认真填写需求信息,我们会在24小时内与您取得联系。