[关闭]
@dudusky 2017-03-04T06:04:11.000000Z 字数 3851 阅读 450

前言

同域部分实现数据共享

采用localStorage/sessionStorage来保存数据

  1. localStorage.setItem('localData','localStorage test data');//设置数据
  2. var localData = localStorage.getItem('localData');//取出数据
  3. sessionStorage.setItem('sessionData','session test data');//设置数据
  4. var sessionData = sessionStorage.getItem('sessionData');//取出数据

  1. localStorage.removeItem('localData');//删除数据
  2. sessionStorage.removeItem('sessionData');//删除数据

采用cookie保存数据

  1. document.cookie = "cookieData='cookie test data'";//设置cookie
  2. document.cookie;//获取所有cookie
  3. (function(){
  4. //获取某一个cookie
  5. function getCookie(cookieName){
  6. var regexp = new RegExp("(;?|^)"+cookieName+"=([^;]*)(;|$)","mi");
  7. var arr = document.cookie.match(regexp);
  8. console.log(arr);
  9. return arr[2];
  10. };
  11. })();

chrome浏览器控制台截图如下:

删除cookie只需要给某个cookie设置一个过期时间就可以了,比如我设置上面的cookieData,只需要像下面这样做一下就可以轻松实现删除cookie:

  1. var nowTime = new Date().getTime();//获取当前时间
  2. var expirAtionTime = new Date(nowTime-1);//设置过去时间
  3. document.cookie = "cookieData='cookie test data';expires="+expirAtionTime.toGMTString();

控制台截图如下:

当然了,cookie还可以设置很多其它参数,比如安全域、主机等,总之我的理解就是cookie和localStorage/sessionStorage是差不多的数据存储方式,只是cookie更灵活一点,但设置起来要难一点!

虽然我刚开始是想使用cookie来实现上面的需求,但我后来发现cookie除了存在跟localStorage/sessionStorage一样的问题以外,保存的数据在用户退出重进不能很好的更新,还存在兼容性,在移动端有的浏览器存在不支持cookie,(注:cookie在移动端什么情况,在这里不深究!具体可自行查阅相关资料!)所以这种方式被终止!

通过URL方式来保存数据

  1. <!--a页面-->
  2. <a href="./b.html?shareData=testData">链接b</a>
  3. <!--b页面-->
  4. <script type="text/javascript">
  5. var data = location.search.slice(1).split('&')[0].replace('shareData=','');//testData
  6. </script>

我这里就采用了这种方式,因为采用url的方式传输数据不会存在localStorage/sessionStorage、cookie发现的问题,但是这种方式也有它不好的地方,因为url不能传输太大的数据,有字节数限制,当然了我结合这个需求的实际情况,我觉得这里可以采用这种方法。

采用闭包方式实现保存数据

注:这里不讨论worker方式

跨域方式实现数据共享

_ 1、使用cors:

这种方法的好处就是你根本不用改变你前台的写的代码,你同域的时候怎么写的,现在跨域就怎么写,只是需要在后台服务器端响应的时候配置一下"Access-Control-Allow-Origin"响应头就好,把它的设置成你允许访问的那个服务器就好,就是你想获取数据的那个页面所在的服务器。可以设置*,这样所有服务器都可以访问这个资源了。

_ 2、使用jsonp

相关描述可以来这里查看

_ 3、使用代理服务器

理解这种方法的前提是首先需要知道为什么会出现跨域问题?因为浏览器有个同源策略,所以才会出现跨域问题,那么我们把数据放在后台去请求呢!问题就会迎刃而解了,因为服务器端是没有同源策略的!

_ 4、其它方式

还有其他的方式,比如frame、postMessage等,这些我用的比较少,所以在这里不做介绍了!

时间仓促,写的不对的地方,希望及时提醒我一下,当然了你也可以多看看其它地方,以作对比、权衡从而发现细节问题,后期持续更新……

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注