新兴的API(javascript)
Posted 古墩古墩
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了新兴的API(javascript)相关的知识,希望对你有一定的参考价值。
requestAnimationFrame()
每次浏览器重绘之前会调用这个方法!!!
它接收一个参数,就是回调函数;
它可以保证在最佳的间隔时间调用传入的回调函数,以达到让屏幕产生最流畅的动画效果。每次调用这个api它只会调用一次回调函数,并且给回调函数传入间隔的时间(毫秒)。很适合用js做动画。
下面这个方法可以打印出不同浏览器两次重绘的间隔时间(毫秒):
(function(){
function draw(timestamp){
// 计算两次重绘的时间间隔
var drawStart=(timestamp||Date.now()),
diff=drawStart-startTime;
//使用diff确定下一步的重绘时间
// console.log(diff);//这就是当前浏览器当前重绘的时间间隔(毫秒)
// 把startTime重写为这一次的绘制时间
startTime=drawStart;
// 重绘UI
requestAnimationFrame(draw);
}
var requestAnimationFrame=window.requestAnimationFrame||
window.mozRequestAnimationFrame||
window.webkitRequestAnimationFrame||
window.msRequestAnimationFrame,
startTime=window.mozAnimationStartTime||Date.now();
console.log(startTime);
requestAnimationFrame(draw);
})();
以上代码只兼容IE、chrome、firefox浏览器
Page Vilibility API
用于确认页面是否被隐藏。
document.hidden: 表示页面是否隐藏的布尔值。页面隐藏包含页面在后台标签中或者浏览器最小化。
document.visibilityState:它有以下几种可能的值
visible : 页面内容至少是部分可见。 在实际中,这意味着页面是非最小化窗口的前景选项卡。
hidden : 页面内容对用户不可见。 在实际中,这意味着文档可以是一个后台标签,或是最小化窗口的一部分,或是在操作系统锁屏激活的状态下。
prerender : 页面内容正在被预渲染且对用户是不可见的(被document.hidden当做隐藏). 文档可能初始状态为prerender,但绝不会从其它值转为该值。 注释:浏览器支持是可选的。
unloaded : 页面正在从内存中卸载。 注释:浏览器支持是可选的。
visibilitychange:这是一个document可以监听的事件,当文档从可见变为不可见或者从不可见变为可见时,触发该事件。
成功回调函数会接收到一个Position对象参数,给对象有两个属性:coords和timestamp:
coords对象中将包含下列与位置相关的信息:
latitude:以十进制表示的纬度。
longitude:以十进制表示的经度。
accuracy:经、纬度坐标的经度,以米为单位。
有些浏览器还可能会在coords对象中提供如下属性:
altitude:以米为单位的海拔高度,如果没有相关数据则值为null。
altitudeAccuracy:海拔高度的精度,以米为单位,数值越大越不精确。
heading:指南针的方向,0表示正北,值为NAN表示没有检测到数据。
speed:速度,即每秒移动多少米,如果没有相关数据则值为null。
在失败回调函数在被调用的时候也会接收到一个参数,这个参数是一个数组,数组中包含了对象,对象包含两个属性:message和code。其中,message属性中保存着给人看的文本信息,解释为什么会出错。而code保存着一个数值。
第三个参数时一个选项对象:可以设置的选项有三个:
enableHighAccuracy:是一个布尔值,表示必须尽可能使用最精准的位置信息。
timeout:以毫秒数表示的等待位置信息的最长时间。
maximumAge:表示上一次取得的坐标信息的有效时间,以毫秒表示,如果时间到则重新取得新坐标信息。
function geolocationSupport(){
if(!navigator.geolocation){
alert("你的浏览器不支持html5 Geolocation");
}else{
getCurrentPosition();
}
}
function getCurrentPosition(){
var options={
enableHighAccuracy:true,
timeout:60000,
maximumAge:60000
}
navigator.geolocation.getCurrentPosition(success,error,options)
}
function success(position)
{
var x=position.coords.longitude;
var y=position.coords.latitude;
alert("经度为:"+x+"纬度为:"+y);
}
function error(err)
{
var errorTypes={
1:"用户拒绝定位服务",
2:"获取不到定位信息",
3:"获取定位信息超时"
}
alert(errorTypes[err.code]);
}
window.onload=geolocationSupport();
以上是关于新兴的API(javascript)的主要内容,如果未能解决你的问题,请参考以下文章
VSCode自定义代码片段12——JavaScript的Promise对象
javascript 如果浏览器JS API支持,则此片段将Time to First Paint,Connection type和Speed发送到第一个网络跃点。脚本s