浏览器和设备之间还有很多有趣的接口,

1.屏幕朝向接口

浏览器有两种方法来监听屏幕朝向,看是横屏还是竖屏。

(1)使用css媒体查询的方法

/* 竖屏 */
@media screen and (orientation: portrait) {
div{
width: 100%;
}
} /* 横屏 */ @media screen and (orientation: landscape) {
div{
height: 100%;
}

(2)利用js调用屏幕朝向接口

screen.addEventListener("orientationchange", function () {
console.log("屏幕的方向是: " + screen.orientation.angle);
});

例子:demo

2.设备朝向接口

通过这个接口可以监听设备朝向及旋转,以便自动调节放心,这个接口有两个:

(1) DeviceOrientationEvent:监听方向变化

window.addEventListener("deviceorientation", operate, true);

operate会接收一个对象,对象含有4个属性分别是:

function opertate(orientData) {
var absolute = orientData.absolute;
var alpha = orientData.alpha;//z轴上的旋转角度(0~360)
var beta = orientData.beta;//x轴的旋转角度(-180~180)
var gamma = orientData.gamma;//y轴上的旋转角度(-90-90)
}

  

(2) DeviceMotinEvent:监听加速度变化

window.addEventListener("devicemotion", operate, true);

operate同样会接收一个对象,有4个属性

acceleration 和 accelerationIncludingGravity都是去除重力后的加速度,包括3组数据
x: 左向右
y: 下到上
z: 垂直地面 rotationRate包含3组数据: alpha:垂直旋转速率
beta: 左至右的轴的旋转速率
gamma: 从下至上方向的轴的旋转速率 intervali:i是从设备获取数据的频率(ms)

利用以上的api我们可以监听设备的移动方向,从而做出更加具有交互感的h5页面和游戏。

例子:demo

3.地理位置接口(https)

浏览器可以直接获取到用户的地理位置接口,返回用户的经纬度,拿着这个经纬度可以到百度或者腾讯地图开发的接口去查询用户的位置,

为了安全考虑,使用这个接口之前会先征求用户的许可。

但是现在限制只能在https的链接中使用,安卓的微信中还可以继续使用,但是ios10中也要求必须是https。

navigator.geolocation(succ,error,option); //这个接口异步获取用户的地理位置

(1)获取成功之后调用第一个参数定义的succ函数,

(2)如果调用失败则调用第二个参数定义的error函数,并返回错误代码error.code 和error.message

error.code:1  用户拒绝显示位置
error.code:2 获取位置失败
error.code:3 请求超时
error.code:4 未知错误

(3)option:可选,用来设定是否获取高精度定位,等待请求时间和最长定位缓存时间。

var option ={
  enableHighAccuracy:true,
  timeout:1000,
  maximumAge:0
}

l

navigator.geolocation.getCurrentPosition(function(position) {
  alert(position.coords.latitude, position.coords.longitude);//获取纬度、精度
});

地理位置还有一个接口:navigator.geolocation.watchPosition(succ,error,option);//监听用户的位置

这个接口会在用户位置变化时,自动调用。

var watchID = navigator.geolocation.watchPosition(function(position) {
alert(position.coords.latitude, position.coords.longitude);
});

清除监听

navigator.geolocation.clearWatch(watchID);

  

  

内容原创,转载请注明出处:

作者:Jess_喵

来源:http://www.cnblogs.com/zhangwenjiajessy/p/6246021.html

 

几个有趣的WEB设备API(二)的更多相关文章

  1. 几个有趣的WEB设备API 前端提高B格必备(一)——电池状态&震动api

    受到同事启发,突然发现了几个有趣又实用的web api,没想到前端还有这么多有趣的东西可以玩~~简直过分. 1.电池状态API navigator.getBattery():这个api返回的是一个pr ...

  2. HTML5权威指南--Web Storage,本地数据库,本地缓存API,Web Sockets API,Geolocation API(简要学习笔记二)

    1.Web Storage HTML5除了Canvas元素之外,还有一个非常重要的功能那就是客户端本地保存数据的Web Storage功能. 以前都是用cookies保存用户名等简单信息.   但是c ...

  3. HTML5 ——web audio API 音乐可视化(二)

    上一篇 web audio API 音乐可视化(一)介绍了一些基本的API,以及如何简单的播放一个音频,本篇介绍一下怎么对获取到的音频进行分析,并将分析后的数据绘制成图像. 最终效果请戳这里; 完整版 ...

  4. C# 调用百度地图Web服务API

    最近公司项目中需要根据两个地点的交通路径和距离做一些数据推荐,为了程序的稳定和用户体验所以想从百度地图 API 采集数据保存到数据库中,经过一翻研究之后选定了百度地图 Web 服务 API 中的 Di ...

  5. 使用Web Audio API绘制音波图

    摘要:Web Audio API是对<audio> 标签功能上的补充,我们可以用它完成混音.音效.平移等各种复杂的音频处理,本文简单的使用其完成音波图的绘制. PS:本例子使用ES6编程, ...

  6. C# 调用百度地图 Web 服务 API

    最近公司项目中需要根据两个地点的交通路径和距离做一些数据推荐,为了程序的稳定和用户体验所以想从百度地图 API 采集数据保存到数据库中,经过一翻研究之后选定了百度地图 Web 服务 API 中的 Di ...

  7. web 基础(二) HTML5

    web 基础(二) HTML5 一.HTML5 HTML5 是最新的 HTML 标准.是专门为承载丰富的 web 内容而设计的,并且无需额外插件.它拥有新的语义.图形以及多媒体元素.并提供的新元素和新 ...

  8. 【HTML5】Web Audio API打造超炫的音乐可视化效果

    HTML5真是太多炫酷的东西了,其中Web Audio API算一个,琢磨着弄了个音乐可视化的demo,先上效果图: 项目演示:别说话,点我!  源码已经挂到github上了,有兴趣的同学也可以去st ...

  9. H5的Web Audio Api

    概述 研究Web Audio Api的主要原因是:工作中需要在ios中实现声音的淡出效果,主要是通过setInterval来改audio标签的volume属性实现的,但是ios上面volume属性是只 ...

随机推荐

  1. Hadoop 中利用 mapreduce 读写 mysql 数据

    Hadoop 中利用 mapreduce 读写 mysql 数据   有时候我们在项目中会遇到输入结果集很大,但是输出结果很小,比如一些 pv.uv 数据,然后为了实时查询的需求,或者一些 OLAP ...

  2. python3  threading初体验

    python3中thread模块已被废弃,不能在使用thread模块,为了兼容性,python3将thread命名为_thread.python3中我们可以使用threading进行代替. threa ...

  3. 分布式系列文章——Paxos算法原理与推导

    Paxos算法在分布式领域具有非常重要的地位.但是Paxos算法有两个比较明显的缺点:1.难以理解 2.工程实现更难. 网上有很多讲解Paxos算法的文章,但是质量参差不齐.看了很多关于Paxos的资 ...

  4. Asp.net Core中使用Session

    前言 2017年就这么悄无声息的开始了,2017年对我来说又是特别重要的一年. 元旦放假在家写了个Asp.net Core验证码登录, 做demo的过程中遇到两个小问题,第一是在Asp.net Cor ...

  5. 如何一步一步用DDD设计一个电商网站(五)—— 停下脚步,重新出发

    阅读目录 前言 单元测试 纠正错误,重新出发 结语 一.前言 实际编码已经写了2篇了,在这过程中非常感谢有听到观点不同的声音,借着这个契机,今天这篇就把大家提出的建议一个个的过一遍,重新整理,重新出发 ...

  6. 【.net 深呼吸】限制执行代码的权限

    前面好几篇文章,老周都跟大伙伴们聊了跟应用程序域有关的话题,干脆咱们一聊到底吧,做学问就应该这样,有恒心. App Domain的创建新应用程序域的方法中,有一个特殊的重载: public stati ...

  7. Python列表去重

    标题有语病,其实是这样的: 假设有两个列表 : L1 = [1,2,3,4] ; L2 = [1,2,5,6] 然后去掉L1中包含的L2的元素 直接这样当然是不行的: def removeExists ...

  8. 谈一谈NOSQL的应用,Redis/Mongo

    1.心路历程 上年11月份来公司了,和另外一个同事一起,做了公司一个移动项目的微信公众号,然后为了推广微信公众号,策划那边需要我们做一些活动,包括抽奖,投票.最开始是没有用过redis的,公司因为考虑 ...

  9. 使用SecureCRT连接虚拟机(ubuntu)配置记录

    这种配置方法,可以非常方便的操作虚拟机里的Linux系统,且让VMware在后台运行,因为有时候我直接在虚拟机里操作会稍微卡顿,或者切换速度不理想,使用该方法亲测本机效果确实ok,特此记录. Secu ...

  10. Hibernate中事务声明

    Hibernate中JDBC事务声明,在Hibernate配置文件中加入如下代码,不做声明Hibernate默认就是JDBC事务. 一个JDBC 不能跨越多个数据库. Hibernate中JTA事务声 ...