HTML5地理位置API,允许js程序向浏览器询问用户的真实信息,移动端使用GPS获取的位置,非常精准但是地理位置API的浏览器访问前总是会询问是否同意,如果同意的话就会获取到位置,否则获取不到,今天小编就来说说关于前端知识点总结?下面更多详细答案一起来看看吧!

前端知识点总结(前端移动端常见知识点总结)

前端知识点总结

1、获取位置

HTML5地理位置API,允许js程序向浏览器询问用户的真实信息,移动端使用GPS获取的位置,非常精准。但是地理位置API的浏览器访问前总是会询问是否同意,如果同意的话就会获取到位置,否则获取不到。

geolocation对象获取位置的方法:

具体获取用户位置代码如下:

navigator.geolocation.getCurrentPosition(success=>{ console.log(success.coords)//包含位置的经纬度、速度、海拔、经纬度精度、海拔精度信息 },fail=>{ console.log(fail)//获取失败的原因 },{ //可增加的4个配置参数 enableHighAccuracy:true,//高精度 timeout:5000,//超时时间,以ms为单位 maximumAge:24*60*60*1000,//位置缓存时间,以ms为单位 })

位置获取成功后返回的 success.coords 的属性及意义如下:

具体详细内容,请点击《HTML5(二)——获取用户位置》。

2、摇一摇

微信活动页面经常有“摇一摇,拿好礼”,还有拼多多摇现金,摇一摇功能也非常常见。HTML5 提供的 devicemotion 事件封装了设备的运动传感器,提供设备的加速度,还提供设备自转速率。对设备运动状态进行判断,就可以实现“摇一摇”效果。

devicemotion 监听手机加速度变化的事件:

摇一摇代码示例:

var shake_threshold = 4000; //放一移动的干扰,设置一个临界值 /* 使用之前先检查浏览器是否支持 */ if(window.DeviceMotionEvent){ /* 添加事件 */ window.addEventListener('devicemotion',function(eventData){ var acceleration =eventData.accelerationIncludingGravity; var curTime = new Date().getTime(); if ((curTime-last_update)> 10) { var diffTime = curTime -last_update; last_update = curTime; x = acceleration.x; y = acceleration.y; z = acceleration.z; var speed = Math.abs(x y z - last_x - last_y - last_z) / diffTime * 10000; if (speed > SHAKE_THRESHOLD) { alert("摇一摇成功了!"); // Do something } } }) }

3、判断手机类型

var type=""; if (/android/i.test(navigator.userAgent)){ type="android"; } if (/ipad|iphone|mac/i.test(navigator.userAgent)){ type="ios"; }

4、检查浏览器类型

var browser={ versions : function(){ var u = navigator.userAgent, app = navigator.appVersion; return {//移动终端浏览器版本信息 trident: u.indexOf('Trident') > -1, //IE内核 presto: u.indexOf('Presto') > -1, //opera内核 webKit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核 gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, //火狐内核 mobile: !!u.match(/AppleWebKit.*Mobile.*/)||!!u.match(/AppleWebKit/), //是否为移动终端 ios: !!u.match(/\(i[^;] ;( U;)? CPU. Mac OS X/), //ios终端 android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, //android终端或者uc浏览器 iPhone: u.indexOf('iPhone') > -1 || u.indexOf('Mac') > -1, //是否为iPhone或者QQ HD浏览器 iPad: u.indexOf('iPad') > -1, //是否iPad webApp: u.indexOf('Safari') == -1 //是否web应该程序,没有头部与底部 }; }(), language:(navigator.browserLanguage || navigator.language).toLowerCase() } browser.language // 语言 browser.versions.mobile // 是否为移动终端 browser.versions.ios // ios终端 browser.versions.android // android终端 browser.versions.iPhone // 是否为iPhone browser.versions.iPad // 是否iPad

移动端浏览器也有很多,制作广告插件的同学,天天面对的是不同浏览器屏蔽广告,所以需要研究每个浏览类型。写插件的时候经常需要根据不同浏览器单独处理某些元素。

5、拍照

由于调用摄像头有使用权限,只能在本地运行,线上运行需要使用 https 域名才可以使用。网页内调用摄像头拍照。目前浏览器提供了API能够直接访问用户媒体设备(摄像头、麦克风)。

navigator.mediaDevices.getUserMedia

作用:为用户直接提供直接连接摄像头、麦克风的硬件设备接口。

navigator.mediaDevices.getUserMedia(constraints).then(function(mediaStream){ // 获取成功 } catch(function(error){ //获取失败 }

constraints 为音频和视频指定参数 ,如:

{ audio:true , video:true }// 在获得的媒体中同时包含音频与视频 { audio: true, video: { width: 1280, height: 720 } // 获得指定了大小的视频 }

6、打电话

网页信息中基本都有联系电话号码,联系我们等按钮,在移动端经常需要加入拨打电话功能,这样用户只要点击一下就可以拨打电话了。

使用代码如下:

<a href="tel:phonenumber">报警!</a>

以下两种方法亲测无效:

7、发短信

想要实现在网页上点击快捷发送短信功能,此时安卓和ios写法相同,但是结果却不同。

<a href="sms:10010?body=TD">发送短信TD到10010</a>

安卓手机:点击之后直接就可以把 TD 作为内容,直接发送到10010。

ios手机:点击之后电话号码变成 10010?body=TD 。

测试各种机型,无法兼容所有,最后去掉内容,只保留电话号码。

。。。。。

,