0

0

HTML5新特性之移动设备API

黄舟

黄舟

发布时间:2017-03-30 11:47:00

|

2127人浏览过

|

来源于php中文网

原创

为了更好地为移动设备服务,html5推出了一系列针对移动设备的api

1、Geolocation API

Geolocation接口用于获取用户的地理位置。它使用的方法基于GPS或者其他机制(比如IP地址、WIFI热点等)。

下面的方法,可以检查浏览器是否支持这个接口。

if (navigator.geolocation) {    // 支持} else {    //不支持}

1.1 getCurrentPosition方法

getCurrentPosition方法,用来获取用户的地理位置。使用它需要得到用户的授权,浏览器会跳出一个对话框,询问用户是否许可当前页面获取他的地理位置。必须考虑两种情况的回调函数:一种是同意授权,另一种是拒绝授权。如果用户拒绝授权会抛出一个错误。

navigator.geolocation.getCurrentPosition(geoSuccess, geoError);

上面代码指定了处理当前地址位置的两个回调函数。

立即学习前端免费学习笔记(深入)”;

(1)同意授权

如果用户同意授权,就会调用geoSuccess。

function geoSuccess(event) {    var coords = event.coords;
    console.log('latitude: ' + coords.latitude);    //纬度
    console.log('longitude: ' + coords.longitude);    //经度
    console.log('accuracy: ' + coords.accuracy);    //精度
    console.log('altitude: ' + coords.altitude);    //海拔
    console.log('altitudeAccuracy: ' + coords.altitudeAccuracy); //海拔精度(单位:米)
    console.log('heading: ' + coords.heading);    //以360度表示的方向
    console.log('speed: ' + coords.speed);    //每秒的速度(单位:米)}

geoSuccess的参数是一个event对象。event.coords属性指向一个对象,包含了用户的位置信息,主要是以下几个值:

  • coords.latitude:纬度

  • coords.longitude:经度

  • coords.accuracy:精度

  • coords.altitude:海拔

  • coords.altitudeAccuracy:海拔精度(单位:米)

  • coords.heading:以360度表示的方向

  • coords.speed:每秒的速度(单位:米)

(2)拒绝授权

如果用户拒绝授权,就会调用geoError。

function geoError(event) {
    console.log('Error code ' + event.code + '. ' + event.message);
}

geoError的参数也是一个event对象。event.code属性表示错误类型,有四个值:

  • 0:未知错误,浏览器没有提示出错的原因,相当于常量event.UNKNOWN_ERROR。

  • 1:用户拒绝授权,相当于常量event.PERMISSION_DENIED

  • 2:没有得到位置,GPS或其他定位机制无法定位,相当于常量event.POSITION_UNAVAILABLE。

  • 3:超时,GPS没有在指定时间内返回结果,相当于常量event.TIMEOUT。

    贝特协同办公系统(BetterCOS)
    贝特协同办公系统(BetterCOS)

    具备更多的新特性: A.具有集成度更高的平台特点,集中体现了信息、文档在办公活动中交流的开放性与即时性的重要。 B.提供给管理员的管理工具,使系统更易于管理和维护。 C.产品本身精干的体系结构再加之结合了插件的设计思想,使得产品为用户度身定制新模块变得非常快捷。 D.支持对后续版本的平滑升级。 E.最价的流程管理功能。 F.最佳的网络安全性及个性化

    下载

event.message为错误提示信息。

(3)设置定位行为

getCurrentPosition方法还可以接受一个对象作为第三个参数,用来设置定位行为。

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

navigator.geolocation.getCurrentPosition(geoSuccess, geoError, option);

这个参数对象有三个成员:

  • enableHighAccuracy:如果设为true,就要求客户端提供更精确的位置信息,这会导致更长的定位时间和更大的耗电,默认设置为false。

  • timeout:等待客户端做出回应的最大毫秒数,默认值为Infinity(无限)。

  • maxinumAge:客户端可以使用缓存数据的最大毫秒数。如果设为0,客户端不读取缓存;如果设为infinity,客户端只读取缓存。

1.2 watchPosition方法和clearWatch方法

watchPosition方法可以用来监听用户位置的持续改变,使用方法与getCurrentPosition方法一样。

var watchID = navigator.geolocation.watchPosition(geoSuccess, geoError);

一旦用户位置发生改变,就会调用回调函数。

如果要取消监听,则使用clearWatch方法。

navigator.geolocation.clearWatch(watchID);

2、Vibration API

Vibration接口用于在浏览器中发出命令,使得设备振动。由于该操作很耗电,在低电量时最好取消该操作。

使用下面的代码检查该接口是否可用。目前,只有Chrome和Firefox的Android平台最新版本支持它。


navigator.vibrate = navigator.vibrate ||
                               navigator.webkitVibrate ||
                               navigator.mozVibrate ||
                               navigator.msVibrate;if (navigator.vibrate) {    // 支持}

vibrate方法可以使得设备振动,它的参数就是振动持续的毫秒数。

navigator.vibrate(1000);

上面的代码使得设备振动1秒钟。

vibrate方法还可以接受一个数组作为参数,表示振动的模式。偶数位置的数组成员表示振动的毫秒数,奇数位置的数组成员表示等待的毫秒数。

navigator.vibrate([500, 300, 500]);

上面代码表示,设备先振动500毫秒,然后等待300毫秒,再接着振动500毫秒。

vibrate是一个非阻塞式的操作,即手机振动的同时,api0代码继续向下运行。要停止振动,只有将0毫秒传入vibrate方法。

navigator.vibrate(0);

3、亮度调节

当移动设备的亮度传感器,感知外部亮度发生显著变化时,会触发devicelightapi1。目前,只有Firefox布署了这个API。

window.addEventListener('devicelight', function(event) {
    console.log(event.value + 'lux');
})

下面代码表示,devicelight事件的回调函数,接受一个事件对象作为参数。该对象的value属性就是亮度值。

这种API的一种应用是,我们可以针对亮度的强弱来改网页背景和文字颜色。

相关文章

HTML速学教程(入门课程)
HTML速学教程(入门课程)

HTML怎么学习?HTML怎么入门?HTML在哪学?HTML怎么学才快?不用担心,这里为大家提供了HTML速学教程(入门课程),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
全国统一发票查询平台入口合集
全国统一发票查询平台入口合集

本专题整合了全国统一发票查询入口地址合集,阅读专题下面的文章了解更多详细入口。

12

2026.02.03

短剧入口地址汇总
短剧入口地址汇总

本专题整合了短剧app推荐平台,阅读专题下面的文章了解更多详细入口。

19

2026.02.03

植物大战僵尸版本入口地址汇总
植物大战僵尸版本入口地址汇总

本专题整合了植物大战僵尸版本入口地址汇总,前往文章中寻找想要的答案。

11

2026.02.03

c语言中/相关合集
c语言中/相关合集

本专题整合了c语言中/的用法、含义解释。阅读专题下面的文章了解更多详细内容。

2

2026.02.03

漫蛙漫画网页版入口与正版在线阅读 漫蛙MANWA官网访问专题
漫蛙漫画网页版入口与正版在线阅读 漫蛙MANWA官网访问专题

本专题围绕漫蛙漫画(Manwa / Manwa2)官网网页版入口进行整理,涵盖漫蛙漫画官方主页访问方式、网页版在线阅读入口、台版正版漫画浏览说明及基础使用指引,帮助用户快速进入漫蛙漫画官网,稳定在线阅读正版漫画内容,避免误入非官方页面。

8

2026.02.03

Yandex官网入口与俄罗斯搜索引擎访问指南 Yandex中文登录与网页版入口
Yandex官网入口与俄罗斯搜索引擎访问指南 Yandex中文登录与网页版入口

本专题汇总了俄罗斯知名搜索引擎 Yandex 的官网入口、免登录访问地址、中文登录方法与网页版使用指南,帮助用户稳定访问 Yandex 官网,并提供一站式入口汇总。无论是登录入口还是在线搜索,用户都能快速获取最新稳定的访问链接与使用指南。

92

2026.02.03

Java 设计模式与重构实践
Java 设计模式与重构实践

本专题专注讲解 Java 中常用的设计模式,包括单例模式、工厂模式、观察者模式、策略模式等,并结合代码重构实践,帮助学习者掌握 如何运用设计模式优化代码结构,提高代码的可读性、可维护性和扩展性。通过具体示例,展示设计模式如何解决实际开发中的复杂问题。

2

2026.02.03

C# 并发与异步编程
C# 并发与异步编程

本专题系统讲解 C# 异步编程与并发控制,重点介绍 async 和 await 关键字、Task 类、线程池管理、并发数据结构、死锁与线程安全问题。通过多个实战项目,帮助学习者掌握 如何在 C# 中编写高效的异步代码,提升应用的并发性能与响应速度。

2

2026.02.03

Python 强化学习与深度Q网络(DQN)
Python 强化学习与深度Q网络(DQN)

本专题深入讲解 Python 在强化学习(Reinforcement Learning)中的应用,重点介绍 深度Q网络(DQN) 及其实现方法,涵盖 Q-learning 算法、深度学习与神经网络的结合、环境模拟与奖励机制设计、探索与利用的平衡等。通过构建一个简单的游戏AI,帮助学习者掌握 如何使用 Python 训练智能体在动态环境中作出决策。

2

2026.02.03

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
HTML5/CSS3/JavaScript/ES6入门课程
HTML5/CSS3/JavaScript/ES6入门课程

共102课时 | 6.9万人学习

HTML+CSS基础与实战
HTML+CSS基础与实战

共132课时 | 10.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号