站長資訊網
        最全最豐富的資訊網站

        HTML5新特性之移動設備API

        為了更好地為移動設備服務,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。

        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是一個非阻塞式的操作,即手機振動的同時,JavaScript代碼繼續向下運行。要停止振動,只有將0毫秒傳入vibrate方法。

        navigator.vibrate(0);

        3、亮度調節

        當移動設備的亮度傳感器,感知外部亮度發生顯著變化時,會觸發devicelight事件。目前,只有Firefox布署了這個API。

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

        下面代碼表示,devicelight事件的回調函數,接受一個事件對象作為參數。該對象的value屬性就是亮度值。

        這種API的一種應用是,我們可以針對亮度的強弱來改網頁背景和文字顏色。

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 鲸鱼传媒绿头鱼实验室之炮机测评日韩精品一级毛 | 一区二区日韩国产精品| 国产午夜福利精品久久2021| 亚洲天堂久久精品| 亚洲国产精品成人久久| 精品久久8x国产免费观看| 91精品无码久久久久久五月天| 亚洲精品国产av成拍色拍| 国产精品单位女同事在线| 国内揄拍高清国内精品对白| 国产麻豆精品入口在线观看| 国产美女久久精品香蕉69| 毛片a精品**国产| 性色精品视频网站在线观看 | 亚洲高清国产拍精品26U| 99久久夜色精品国产网站| 亚洲精品国产首次亮相| 成人一区二区三区精品| 久久国产乱子伦免费精品| 韩国三级中文字幕hd久久精品| 国产精品免费福利久久| 日韩欧美国产精品第一页不卡| 久久这里只精品国产99热 | 免费精品无码AV片在线观看| 国产99精品一区二区三区免费 | 国产精品1024视频| 久久水蜜桃亚洲av无码精品麻豆| 无码精品第一页| 久久久久亚洲精品男人的天堂 | 国产精品自在欧美一区| 久久96国产精品久久久| 精品一区二区三区在线视频| 99久久99久久精品免费看蜜桃 | 久久精品国产一区| 国产精品久久久久影院嫩草| 国产成人精品高清在线观看93| 久久国产精品无码HDAV| 孩交VIDEOS精品乱子| 成人午夜视频精品一区| 国产伦精品一区二区三区| 精品日韩亚洲AV无码一区二区三区|