获取本地位置navigator和本地存储localstorage/sessionstorage

一、地理位置

navigator.geolocation

【单次定位请求】 :getCurrentPosition(请求成功,请求失败,数据收集方式)

参数:
  • 1、请求成功函数
    经度 : coords.longitude
    纬度 : coords.latitude
    准确度 : coords.accuracy
    海拔 : coords.altitude
    海拔准确度 : coords.altitudeAcuracy
    行进方向 : coords.heading
    地面速度 : coords.speed
    时间戳 : new Date(position.timestamp)

  • 2、请求失败函数
    失败编号 :code
    0 : 不包括其他错误编号中的错误
    1 : 用户拒绝浏览器获取位置信息
    2 : 尝试获取用户信息,但失败了
    3 : 设置了timeout值,获取位置超时了

  • 3、数据收集 : json的形式
    enableHighAcuracy : 更精确的查找,默认false
    timeout : 获取位置允许最长时间,默认infinity
    maximumAge : 位置可以缓存的最大时间,默认0

  • 监听信息
    多次定位请求【如果位置不停在改变,就需要多次请求】 . watchPosition(像setInterval)
    移动设备有用,位置改变才会触发
    配置参数:frequency 更新的频率

关闭更新请求 . clearWatch(像clearInterval)
eg:

navigator.geolocation.watchPosition(function(position){
  box.innerHTML += '经度:'+position.coords.longitude +'<br>';
  box.innerHTML += '纬度:'+position.coords.latitude +'<br>';
  box.innerHTML += '准确度:'+position.coords.accuracy +'<br>';
  box.innerHTML += '海拔:'+position.coords.altitude +'<br>';
  box.innerHTML += '海拔准确度:'+position.coords.altitudeAcuracy +'<br>';
  box.innerHTML += '行进方向:'+position.coords.heading +'<br>';
  box.innerHTML += '地面速度:'+position.coords.speed +'<br>';
      box.innerHTML += '时间戳:'+new Date(position.timestamp)+'<br>';
  },function(err){
                    //alert( err.code );
    navigator.geolocation.clearWatch(timer);
    },{
      enableHighAcuracy : true,
      timeout : 6000,
      maximumAge : 5000,
      frequency : 1000
});

2、本地存储

Storage

  • 1、sessionStorage
    session临时回话,从页面打开到页面关闭的时间段
    窗口的临时存储,页面关闭,本地存储消失
  • 2、localStorage
    永久存储(可以手动删除数据)
  • 3、Storage的特点
    存储量限制 ( 5M )
    客户端完成,不会请求服务器处理
    sessionStorage数据是不共享、 localStorage共享

Storage API:

  • 【1】setItem():
    设置数据,key\value类型,类型都是字符串
    可以用获取属性的形式操作
  • 【2】getItem():
    获取数据,通过key来获取到相应的value
  • 【3】removeItem():
    删除数据,通过key来删除相应的value
  • 【4】clear():
    删除全部存储的值
  • 【5】存储事件:
    当数据有修改或删除的情况下,就会触发storage事件
    在对数据进行改变的窗口对象上是不会触发的
    Key : 修改或删除的key值,如果调用clear(),key为null
    newValue : 新设置的值,如果调用removeStorage(),key为null
    oldValue : 调用改变前的value值
    storageArea : 当前的storage对象
    url : 触发该脚本变化的文档的url
    注:session同窗口才可以,例子:iframe操作
    eg:
  • 浏览器关闭设置并使用
<body>
        <input type="text" /><br />
        <input type="radio" name='sex' value='男'/>男
        <input type="radio" name='sex' value='女'/>女<br />
        
        <textarea id='area' name="" id="" cols="30" rows="10"></textarea>


        <script type="text/javascript">

            var aInput = document.getElementsByTagName('input');
            
            if ( window.localStorage.getItem('name') )
            {
                aInput[0].value = window.localStorage.getItem('name');
            }
            
            if ( window.localStorage.getItem('sex') )
            {
                for ( var i=0;i<aInput.length;i++ )
                {
                    if ( aInput[i].value == window.localStorage.getItem('sex')  )
                    {
                        aInput[i].checked = true;
                    }
                }
            }
            
            if ( window.localStorage.getItem('text') )
            {
                area.value = window.localStorage.getItem('text');
            }

            window.onunload = function(){          //浏览器关闭时存储
                if ( aInput[0].value )
                {
                    window.localStorage.setItem('name',aInput[0].value);
                }

                for (var i=0;i<aInput.length;i++ )
                {
                    if ( aInput[i].checked )
                    {
                        window.localStorage.setItem('sex',aInput[i].value);
                    }
                }

                if( area.value )
                {
                    window.localStorage.setItem('text',area.value);
                }
            };
        </script>
    </body>
  • 设置获取和删除
<body>
        <input type="text" />
        <input type="button" value='设置'/>
        <input type="button" value='获取'/>
        <input type="button" value='删除'/>

        <script type="text/javascript">
            var aInput = document.getElementsByTagName('input');
            aInput[1].onclick = function(){
                //alert( window.localStorage );
                window.localStorage.setItem('name',aInput[0].value);
            };
            aInput[2].onclick = function(){
                alert( window.localStorage.getItem('name') );
            };
            aInput[3].onclick = function(){
                window.localStorage.removeItem('name');
            };
        </script>
    </body>

  • 监听,storage改变时触发
<body>
        <input type="text" />
        <input type="button" value='设置'/>
        <input type="button" value='获取'/>
        <input type="button" value='删除'/>
        <div id="box"></div>
        <script type="text/javascript">
            var aInput = document.getElementsByTagName('input');
            aInput[1].onclick = function(){
                //alert( window.localStorage );
                window.localStorage.setItem('name',aInput[0].value);
            };
            aInput[2].onclick = function(){
                alert( window.localStorage.getItem('name') );
            };
            aInput[3].onclick = function(){
                window.localStorage.removeItem('name');
            };

            window.addEventListener(
                'storage',
                function(e){
                    var e = e || event;
                    console.log( e.Key );
                    console.log( e.newValue  );
                    console.log( e.oldValue  );
                    console.log( e.storageArea  );
                    console.log( e.url  );

                    box.innerHTML += decodeURI( e.url )
                }
            );
        </script>
    </body>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,670评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,928评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,926评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,238评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,112评论 4 356
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,138评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,545评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,232评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,496评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,596评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,369评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,226评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,600评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,906评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,185评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,516评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,721评论 2 335

推荐阅读更多精彩内容