云顶娱乐-云顶娱乐游戏平台官网
做最好的网站
当前位置: 云顶娱乐 > 云顶娱乐 > 正文

即采纳了,JS原生Date类型方法的一些冷知识

时间:2019-10-04 15:22来源:云顶娱乐
JS原生Date类型方法的有的冷知识 2015/09/07 · JavaScript· Date 原稿出处:chitanda    贰个多月没更新了--偷懒中。那些事物其实很早在此以前就在收拾了,可是新兴发掘本人不菲地点没弄了

JS原生Date类型方法的有的冷知识

2015/09/07 · JavaScript · Date

原稿出处: chitanda   

贰个多月没更新了- -偷懒中。那些事物其实很早在此以前就在收拾了,可是新兴发掘本人不菲地点没弄了然,然后就间接卡那边了(其实就是不想写吗),想了下反就是给自个儿深谙js的原生API而已,所以也没供给太钻牛犄角,也不显明要多完整,因而就当是Date()函数的一个冷门知识点小补充吧。这篇小说首要讲Date()的字符串与时光戳转换以及客户时间本地化,大概内容上相比较乱(不然也不会卡小编二个月时间了),见谅

ps:由于 Date() 是js原生函数,差异浏览器的解析器对其促成方式并差异,所以重返值也许有所不同。本文测验未特别表达浏览器的图景下,均是指 win7 x64+chrome 44.0.2403.155 (正式版本) m (三十四个人) 版本

即选取了 https 也决不通过 query strings 传敏感数据

2017/10/16 · 基本功技巧 · HTTPS

本文由 伯乐在线 - xiaoheike 翻译,艾凌风 校稿。未经许可,幸免转发!
俄文出处:HttpWatch。迎接参与翻译组。

劳务器端的 log 将公开记下完整 url;浏览器上的访问历史也会公然记下完整 url;Referrer headers 里也忠实记下完全 url,然后在外人家的 GoogleAnalytics 上海展览中心示。

我们日常听到的三个相近难题是:“URL 中的参数是还是不是足以高枕而卧地传递到平安网站?”那一个标题时常出现在客户看了 HttpWatch 捕获的 HTTPS 恳求后,想清楚还恐怕有什么人能够看出那一个数据。

 

比方说,假诺在一个询问中,使用如下安全的 URL 传递密码字符串:

HttpWatch 可以显得安全乞请的剧情,因为它与浏览器集成,由此它亦可在 HTTPS 请求的 SSL 连接对数据加密在此之前查看数据。云顶娱乐 1

只要你利用网络嗅探器查看,比方 Network Monitor,对于同四个呼吁,你只可以够查阅加密从此的数据。在多少包追踪中未有可知的网站,标题或内容:

云顶娱乐 2

你能够信赖 HTTPS 央求是安枕无忧的,只要:

  • 未忽略任何SSL证书警告
  • Web 服务器用于运转 SSL 连接的私钥在 Web 服务器本人之外不可用。

故此,在网络范围,URL 参数是安全的,但是还会有一点其余依照 URL 泄漏数据的艺术:

  1. URL 存款和储蓄在 Web 服务器日志中–日常种种伏乞的完整 URL 都被存放在在服务器日志中。那象征 URL 中的任何敏感数据(举例密码)会以公开方式保留在服务器上。以下是使用查询字符串通过 HTTPS 发送密码时存款和储蓄在 httpwatch.com 服务器日志中的条约: **二〇一〇-02-20 10:18:27 W3SVC4326 WWW 208.101.31.210 GET /Default.htm password=mypassword 443 … 平时以为就是是在服务器上,积攒明文密码平素都不是好主见 2.URLs are stored in the browser history – browsers save URL parameters in their history even if the secure pages themselves are not cached. Here’s the IE history displaying the URL parameter:
  2. URL 存款和储蓄在浏览器历史记录中–就算安全网页本人未缓存,浏览器也会将 URL 参数保存在其历史记录中。以下是 IE 的历史记录,突显了 URL 的呼吁参数:云顶娱乐 3

如果客商创设书签,查询字符串参数也将被积存。

  1. URLReferrer 伏乞头中被传送–即使三个有惊无险网页使用能源,比方 javascript,图片恐怕解析服务,URL 将通过 Referrer 央求头传递到每五个平放对象。有的时候,查询字符串参数恐怕被传送并存放在第三方站点。在 HttpWatch 中,你能够看见我们的密码字符串正被发送到 Google Analytics云顶娱乐 4

结论

搞定这些主题素材亟需两步:

  • 除非在相对须要的动静下传递敏感数据。一旦客户被认证,最佳使用具备有限生命周期的会话 ID 来标记它们。

选取会话层级的 cookies 传递信息的亮点是:

  • 它们不会蕴藏在浏览器历史记录中或磁盘上
  • 它们平日不存款和储蓄在服务器日志中
  • 它们不会传送到嵌入式能源,譬喻图片或 JavaScript
  • 它们仅适用于必要它们的域和路线

以下是大家的在线百货店中,用于识别顾客的 ASP.NET 会话 cookie 示例:

云顶娱乐 5

请注意,cookie 被限制在域 store.httpwatch.com,况且在浏览器会话结束时过期(即不会储存到磁盘)。

你当然能够透过 HTTPS 传递查询字符串,但是绝不在也许出现安全难题的情景下接纳。譬如,你能够安全的施用它们展现部分数字依旧项目,像 accountview 或者 printpage,不过不要使用它们传递密码,银行卡号码大概别的不应该领悟的新闻。

1 赞 收藏 评论

Service Worker入门

2015/03/26 · JavaScript · Service Worker

初稿出处: Matt Gaunt   译文出处:[w3ctech

  • 十年踪迹]()   

原生App具有Web应用普通所不享有的富离线体验,定期的守口如瓶更新,音信文告推送等效用。而新的Serviceworkers规范让在Web App上保有那么些作用成为也许。

论怎么着在四哥大端web前端达成自定义原生控件的体制

2015/10/30 · HTML5 · 原生控件

初稿出处: 卖烧烤夫斯基   

手提式有线电话机支付webapp的同桌料定碰到过如此难点,怎么着为丑极了的无绳电话机成分运用自定义的样式。首先,要弄理解为何要定义手提式无线电话机原生控件的体制,就要求探视手提式有线电话机的那七个原生框样式的丑陋摸样:

android:

云顶娱乐 6

ios:

云顶娱乐 7

云顶娱乐 ,不相同Node版本导致的Date构造函数难题及消除措施

2018/07/06 · JavaScript · Date

初稿出处: 康建云   

这段时间在包装时间接纳组件的单元测量试验时,为了协会出Date对象,直接动用了暗中认可Date构造函数。自身本地开辟,测量试验均无难点,push远程后,有个别小同伙在本地跑测验用例时,却心余力绌通过,具体报错如下:

云顶娱乐 8

经过截图新闻,能够伊始判定由于Date构造函数重返了不一致日期导致,抱着感叹的情态查阅个种种质感后,竟然发掘叁个相当小的日期构造函数里面不乏,平常协调写起来都以一曝十寒,未有深远摸底过。上面将详细介绍那一个破案进度,避防各位看客后续重蹈覆辙。

Date()与new Date()的区别

Date() 直接回到当前岁月字符串,不论是参数是number还是别的string

JavaScript

Date(); Date('sssss'); Date(一千); //Fri Aug 21 二〇一六 15:46:21 螺旋霉素T+0800 (中夏族民共和国家标准准时间)

1
2
3
4
Date();
Date('sssss');
Date(1000);
//Fri Aug 21 2015 15:46:21 GMT+0800 (中国标准时间)

而 new Date() 则是会基于参数来回到对应的值,无参数的时候,再次回到当前时间的字符串情势;有参数的时候回来参数所对应时间的字符串。 new Date() 对参数不管是格式照旧内容都务求,且只回去字符串,

JavaScript

new Date(); //Fri Aug 21 2014 15:51:55 威斯他霉素T+0800 (中华夏族民共和国家标准准时间) new Date(1293879伍仟00); new Date('2012-01-01T11:00:00') new Date('二零一二/01/01 11:00:00') new Date(二零一一,0,1,11,0,0) new Date('jan 01 二零一三,11 11:00:00') new Date('Sat Jan 01 二〇一二 11:00:00') //Sat Jan 01 二零一三 11:00:00 土霉素T+0800 (中国家标准准时间) new Date('sss'); new Date('2013/01/01T11:00:00'); new Date('2012-01-01-11:00:00') new Date('1293879伍仟00'); //Invalid Date new Date('二〇一一-01-01T11:00:00')-new Date('一九九三/02/11 12:00:12') //596069987000

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
new Date();
//Fri Aug 21 2015 15:51:55 GMT+0800 (中国标准时间)
 
new Date(1293879600000);
new Date('2011-01-01T11:00:00')
new Date('2011/01/01 11:00:00')
new Date(2011,0,1,11,0,0)
new Date('jan 01 2011,11 11:00:00')
new Date('Sat Jan 01 2011 11:00:00')
//Sat Jan 01 2011 11:00:00 GMT+0800 (中国标准时间)
 
new Date('sss');
new Date('2011/01/01T11:00:00');
new Date('2011-01-01-11:00:00')
new Date('1293879600000');
//Invalid Date
 
new Date('2011-01-01T11:00:00')-new Date('1992/02/11 12:00:12')
//596069988000

从地点多少个测量检验结果能够很轻便觉察

  1. new Date() 在参数平常的意况只会回到当前岁月的字符串(且是当前时区的时间)
  2. new Date() 在条分缕析三个有血有肉的光阴的时候,对参数有较严谨的格式必要,格式不科学的时候会直接重返Invalid Date,比方将 number 类的岁月戳转变来 string 类的时候也会招致深入分析出错
  3. 虽说 new Date() 的重临值是字符串,然则三个new Date() 的结果字符串是能够向来相减的,结果为离开的飞秒数。

那正是说, new Date() 能接受的参数格式到底是怎么着正儿八经吗?(相对于严峻供给的多参数字传送值方法。非严厉的单参数(数字日期表示格式)更常用且更便于出错,所以下文只思虑单参数数字时间字符串转换的景观)

代表格式)更常用且更易于失误,所以下文只思考单参数数字时间字符串调换的事态)


有关小编:xiaoheike

云顶娱乐 9

简要介绍还没来得及写 :) 个人主页 · 笔者的篇章 · 10 ·      

云顶娱乐 10

Service Worker 是什么?

三个 service worker 是一段运营在浏览器后台进程里的本子,它独立于当下页面,提供了这二个无需与web页面交互的效劳在网页背后悄悄实行的力量。在未来,基于它能够达成音讯推送,静默更新以及地理围栏等劳务,然则当前它首先要享有的效应是阻挠和拍卖网络伏乞,包蕴可编制程序的响应缓存管理。

缘何说这么些API是四个极厉害的API呢?因为它使得开垦者能够支撑非常好的离线体验,它赋予开荒者完全调整离线数据的手艺。

在service worker建议从前,别的贰个提供开荒者离线体验的API叫做App Cache。但是App Cache有个别局限性,举例它能够很轻便地化解单页应用的难题,但是在多页应用上会很麻烦,而Serviceworkers的出现正是为了解决App Cache的痛点。

上边详细说一下service worker有啥须要小心的地方:

  • 它是JavaScript Worker,所以它无法一直操作DOM。不过service worker能够透过postMessage与页面之间通讯,把音信文告给页面,如若供给的话,让页面自身去操作DOM。
  • Serviceworker是二个可编制程序的网络代理,允许开垦者调整页面上管理的互连网央求。
  • 在不被利用的时候,它会友善终止,而当它再也被用到的时候,会被另行激活,所以你不能够凭借于service worker的onfecth和onmessage的管理函数中的全局状态。如果您想要保存一些悠久化的新闻,你能够在service worker里使用IndexedDB API。
  • Serviceworker多量使用promise,所以一旦你不打听如何是promise,这您须要先读书这篇文章。

不得已的选项

看完了这一个难看的分界面元素,我们就足以了解当大家把他们揭破在产品同学的眼中时,那种层层的杀气了。能够看出,分界面成分拾贰分猥琐,产品兄弟是没有疑问不会经受的。可是,不得不说那一个控件在接触后的效力比pc机上的要光彩夺目。那中间以apple机的滚筒选取最为优良.以下是它们触发后调用原生控件的效能:

android:

云顶娱乐 11云顶娱乐 12云顶娱乐 13

ios:

云顶娱乐 14云顶娱乐 15云顶娱乐 16

唯其如此说这个样式原生弹出样式是顺应大家设计的基准的,因为它即反映了UI分界面包车型地铁谐和和体验度,又不损耗任何web品质,关键是我们什么样都无需做。产品BZJ君见到了,指明要在apple机下要滚筒的效应用来摘取日期大概下来单。纵然大家无法化解掉分界面文本框的体制难点,那么不论是前边的意义多光彩夺目,始终使不恐怕令人收受的。恐怕你会想花时间写类似的机能?小编不否定你能够写出来,可是要求有些日子的工作量吗?也不菲人选用了插件的办法。通过jq插件(固然您的种类中没在接纳jq,为了这么些效应无助下载jq和其插件)来落到实处,其实是可怜吃力不讨好的思想政治工作。一个是插件这种事物出了难点可能改变了须求后它会变得要命的不得了扩大,第二个自然是牵记到能源加载,在手提式有线电话机端越发必要思考。因而,选择插件是下下策!

主题素材排查

服从固定做法,出标题后先自身本地跑了一遍测量试验用例,未有其余难点,初步就能够一定是付出际丧命题。于是乎就看了下小同伙nodejs版本号,版本号为6.10.0,而本人本地node版本号为10.3.0,于是在分化nodejs命令行下直接实行如下测验用例。

即采纳了,JS原生Date类型方法的一些冷知识。JavaScript

const defaultDate = new Date('1995-12-17T03:24:00'); console.log(defaultDate.toString());

1
2
3
const defaultDate = new Date('1995-12-17T03:24:00');
 
console.log(defaultDate.toString());

执行结果,

Node 6.10.0:

JavaScript

> const defaultDate = new Date('一九九一-12-17T03:24:00') > console.log(defaultDate.toString()) Sun Dec 17 1993 11:24:00 威他霉素T +0800(中夏族民共和国家规范准时间)

1
2
3
4
> const defaultDate = new Date('1995-12-17T03:24:00')
> console.log(defaultDate.toString())
 
Sun Dec 17 1995 11:24:00 GMT +0800(中国标准时间)

Node 10.3.0:

JavaScript

const defaultDate = new Date('1993-12-17T03:24:00') undefined console.log(defaultDatae.toString()) Sun Dec 17 1992 03:24:00 博来霉素T+0800 (中国家规范准时间)

1
2
3
4
const defaultDate = new Date('1995-12-17T03:24:00')
undefined
console.log(defaultDatae.toString())
Sun Dec 17 1995 03:24:00 GMT+0800 (中国标准时间)

到此基本确认了该难题是由Nodejs情况导致的主题素材。但是为何会有那样的题目吧,跟着小编三回九转长远探秘下Date构造函数。

new Date()解析所帮忙的参数格式标准

Service Worker的生命周期

Service worker具有叁个通通独立于Web页面的生命周期。

要让一个service worker在你的网址上生效,你必要先在您的网页中登记它。注册一个service worker之后,浏览器会在后台默默运行四个service worker的装置进度。

在安装进度中,浏览器会加载并缓存一些静态能源。如若具有的文件被缓存成功,service worker就设置成功了。假使有别的公文加载或缓存退步,那么安装过程就可以战败,service worker就无法被激活(也即未能安装成功)。借使发生那样的主题材料,别顾虑,它会在后一次再尝试安装。

当安装到位后,service worker的下一步是激活,在这一品级,你还足以荣升一个service worker的本子,具体内容大家会在末端讲到。

在激活之后,service worker将接管全体在温馨管辖域范围内的页面,不过只要二个页面是刚刚注册了service worker,那么它此次不会被接管,到下一回加载页面包车型大巴时候,service worker才会生效。

当service worker接管了页面之后,它可能有二种情形:要么被终止以节约内部存款和储蓄器,要么会处理fetch和message事件,那三个事件分别发生于三个互联网央求出现照旧页面上发送了多个新闻。

下图是三个简化了的service worker初次安装的生命周期:

云顶娱乐 17

涸泽而渔办法

主题材料来了,既想要弹出层的炫丽效果,又想自定义控件在分界面呈现的体制。咋做呢?露珠曾经尝试过最简便的措施去重写css去改换它们的样式,可是就算在google若干小时,也远非找到如意的结果。露珠也尝试过-webkit-appearance属性,但它也展现壮志未酬。並且大家还索要协作多机型(安卓,苹果,wp?)。无论怎么样,走改动原本样式的路是于事无补的。露珠经过一番思维,找到了自认为相当好的化解方法,也是那篇博文的焦点:既然控件在页面包车型大巴体制不能改变,那就遮盖它,但是!不是用display:none掩盖,亦不是把width和height设置为0,我们期待的是看不到它们的原有样式,而希望保留对它们的tap和focus事件。然则除了以上的不二秘籍,还应该有哪些能使它们看不见呢?聪明的您早晚想到了,对,便是opacit:0, 通过将控件的不折射率设置为0,大家得以让要素继续让它留在分界面上,并且保持随时响应focus事件的情事。大家要做的,是为该控件设置为相对定位,覆盖在我们自定义样式的八个element上。那样,顾客看见的是上面包车型地铁element,但当她的手去触碰此element时,他实在触碰的是一丝一毫透显然留在分界面上的原生控件!如下图所示:

云顶娱乐 18

那如故首先步,接下去大家须要为控件绑定响应事件,大许多情景下我们要求绑定的平地风波都以onchange,一旦选取成功,就把值复制到自定义的element上去。那样水到渠成了!不管你是透过表单恐怕post提交,你取到的值仍旧是控件的值,自定义的element只负责突显,不担任作业!

云顶娱乐 19

深入剖判

构成难题,提炼出以下小示例,以供深远剖判Date构造函数:

JavaScript

var d1 = new Date("1995/12/17 00:00:00"); var d2 = new Date("1995-12-17T00:00:00"); var d3 = new Date("1995-12-17T00:00:00Z"); console.log(d1.toString()); console.log(d2.toString()); console.log(d3.toString());

1
2
3
4
5
6
var d1 = new Date("1995/12/17 00:00:00");  
var d2 = new Date("1995-12-17T00:00:00");
var d3 = new Date("1995-12-17T00:00:00Z");
console.log(d1.toString());
console.log(d2.toString());
console.log(d3.toString());

nodejs 10.3.0实践结果:

JavaScript

> console.log(d1.toString()); Sun Dec 17 1993 00:00:00 GMT+0800 (中夏族民共和国标准时间) > console.log(d2.toString()); Sun Dec 17 一九九五 00:00:00 螺旋霉素T+0800 (中华人民共和国家规范准时间) > console.log(d3.toString()); Sun Dec 17 壹玖玖贰08:00:00 地霉素T+0800 (中华人民共和国标准时间)

1
2
3
4
5
6
> console.log(d1.toString());
Sun Dec 17 1995 00:00:00 GMT+0800 (中国标准时间)
> console.log(d2.toString());
Sun Dec 17 1995 00:00:00 GMT+0800 (中国标准时间)
> console.log(d3.toString());
Sun Dec 17 1995 08:00:00 GMT+0800 (中国标准时间)

nodejs 6.10.0实行结果:

JavaScript

> console.log(d1.toString()); Sun Dec 17 壹玖玖肆 00:00:00 庆大霉素T+0800 (中华夏族民共和国家标准准时间) > console.log(d2.toString()); Sun Dec 17 壹玖玖肆 08:00:00 维生霉素T+0800 (中夏族民共和国家标准准时间) > console.log(d3.toString()); Sun Dec 17 199508:00:00 威他霉素T+0800 (中华夏族民共和国家规范准时间)

1
2
3
4
5
6
> console.log(d1.toString());
Sun Dec 17 1995 00:00:00 GMT+0800 (中国标准时间)
> console.log(d2.toString());
Sun Dec 17 1995 08:00:00 GMT+0800 (中国标准时间)
> console.log(d3.toString());
Sun Dec 17 1995 08:00:00 GMT+0800 (中国标准时间)

为啥在差别条件下Nodejs的分析行为不雷同吧?这就要提下JS中涉嫌到时间的连锁标准了。

岁月戳格式

这一个是最简易的也是最不便于失误的。当然独一的劣点差不离正是对开采者不直观,不能一眼看出具体日期。
内需在意的以下两点:

  1. js内的小时戳指的是现阶段时光到1970年1月1日00:00:00 UTC对应的毫秒数,和unix时间戳不是多个概念,后面一个表示秒数,差了1000倍
  2. class="crayon-syntax crayon-syntax-inline crayon-theme-github crayon-theme-github-inline crayon-font-monaco" style="font-size: 13px !important; line-height: 15px !important;font-size: 13px !important;"> class="crayon-pre crayon-code" style="font-size: 13px !important; line-height: 15px !important;font-size: 13px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"> class="crayon-r">new class="crayon-r">Date( class="crayon-v">timestamp class="crayon-sy">) 中的时间戳必得是number格式, class="crayon-syntax crayon-syntax-inline crayon-theme-github crayon-theme-github-inline crayon-font-monaco" style="font-size: 13px !important; line-height: 15px !important;font-size: 13px !important;"> class="crayon-pre crayon-code" style="font-size: 13px !important; line-height: 15px !important;font-size: 13px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"> class="crayon-t">string 会返回Invalid Date。所以例如new Date('11111111')这种写法是错的

在大家初叶写码在此之前

从这个品种地址拿到chaches polyfill。

这个polyfill支持CacheStorate.match,Cache.add和Cache.addAll,而现在Chrome M40实现的Cache API还尚未协助这几个艺术。

将dist/serviceworker-cache-polyfill.js放到你的网址中,在service worker中经过importScripts加载进来。被service worker加载的剧本文件会被电动缓存。

JavaScript

importScripts('serviceworker-cache-polyfill.js');

1
importScripts('serviceworker-cache-polyfill.js');

需要HTTPS

在开拓阶段,你能够通过localhost使用service worker,可是即使上线,就供给您的server扶助HTTPS。

您能够因此service worker威胁连接,伪造和过滤响应,非常逆天。固然你可以约束本人不干坏事,也可以有人想干坏事。所感觉了防止别人使坏,你只可以在HTTPS的网页上注册service workers,那样大家才方可防止加载service worker的时候不被人渣篡改。(因为service worker权限极大,所以要防范它自个儿被歹徒篡改利用——译者注)

Github Pages碰巧是HTTPS的,所以它是三个优质的天生实验田。

固然您想要令你的server援助HTTPS,你要求为您的server获得贰个TLS证书。不一样的server安装方法分歧,阅读支持文书档案并通过Mozilla’s SSL config generator领会最棒推行。

代码完成

XHTML

<html> <head> <style> body{ position: relative; } .front { position: absolute; opacity: 0; height: 30px; width: 180px; } .back { height: 30px; width: 386px; border: 1px dashed #19a39e; line-height: 30px; text-align: center; font-size: 11px; } </style> </head> <body> <input type="date" onchange="document.getElementsByClassName('back')[0].innerHTML = this.value;"> <div class="back">作者是自定义element,小编上边覆盖着一层看不见的input</div> </body> </html>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<html>
   <head>
       <style>
           body{
               position: relative;
           }
           .front {
               position: absolute;
               opacity: 0;
               height: 30px;
               width: 180px;
           }
           .back {
                height: 30px;
                width: 386px;
                border: 1px dashed #19a39e;
                line-height: 30px;
                text-align: center;
                font-size: 11px;
           }
       </style>
   </head>
    <body>
        <input type="date" onchange="document.getElementsByClassName('back')[0].innerHTML = this.value;">
        <div class="back">我是自定义element,我上面覆盖着一层看不见的input</div>
    </body>
</html>

 

相关专业

ISO8601标准[参考5]

该标准内定了一旦为钦点偏移时间就默觉稳当下岁月。

云顶娱乐 20

[ES5 规范][参考6]

提出了若无一些名偏移量,暗中同意偏移量为Z。

云顶娱乐 21

[ES6 规范][参考7]

为了和ISO8601标准同样,又对该标准做了更换,要是时区偏移量不设有,日期时间将被讲授为地点时间。

云顶娱乐 22

编辑:云顶娱乐 本文来源:即采纳了,JS原生Date类型方法的一些冷知识

关键词:

  • 上一篇:没有了
  • 下一篇:没有了