>

宗旨造型转变那个事,基本选取

- 编辑:云顶娱乐yd2221 -

宗旨造型转变那个事,基本选取

树立连接和发送央浼

曾经顺遂得到了服务器的IP地址,接下去本身就要向她要东西啊!首先自个儿期待它把baidu.com对应的网页传送给笔者。大家中间传输音信的章程相比特别,无需自个儿坐地铁去找它然后搬回来,而是笔者会跟服务器构建一个连接

连日来,葡萄牙语名称为做Connection。实际上,它就如开垦了贰个专用的大道,供我们相互之间传递消息。

云顶娱乐yd2221 1

接下去,小编就能够透过那么些专项使用通道,向服务器发起四个伸手(Request)。在这几个须要里面,作者会像服务器声明自个儿想要的能源是怎么样,举个例子在此间,作者想要的财富正是百度的首页。

那正是说具体那个能源的职位作者是怎么告诉服务器的呢?还得回来刚才的URubiconL来讲!

云顶娱乐yd2221 2

叁个UKugaL平日由八个部分构成,这里我们只介绍主机名(服务器名)和财富任务(只怕说是财富路线)。一个服务器上能够有比很多的能源,对应着差异的页面大概文件,举例http://xxx.com/login能够是某网址的报到页面,http://xxx.com/register则能够是某网址的登记页面。这里的/login/register就象征了五个不等的财富(这里是页面)。/是相比奇特的财富路线,叫做“根路线”,经常就是网站的首页了。其实,这里的规律就和我们计算机上的文本夹是如出一辙的。

在知情了索要的能源的岗位然后,小编就能够给服务器发送一个呼吁。那几个央浼实际上就是一多元的俄文字符,仿佛一篇文章同样。

GET / HTTP/1.1 User-Agent: curl/7.37.1 Host: baidu.com Accept: */*

1
2
3
4
GET / HTTP/1.1
User-Agent: curl/7.37.1
Host: baidu.com
Accept: */*

什么样,小编也是很有才华的呢!在这里,你需求精通的是,GET /即意味着,我明日要从服务器上拿下来一个能源,那个财富的岗位是/。另外,Host: baidu.com表示本身要乞请的主机名为做baidu.com。Host这些法语单词就是有主机的意趣!

好了,哀告已经希图实现了,小编未来就透过事先创设的连接将那么些央求直接送给服务器!

保证浏览器协理

若是你在一定版本的浏览器上开展付出,那么本身建议您先到 caniuse 查看浏览器对Notification API的支撑景况,防止你将贵重时间浪费在了三个无法使用的API上。

三、结语依旧要的

参谋文章:querySelectorAll from an element probably doesn’t do what you think it does

谢谢阅读,招待纠错,应接调换!

1 赞 1 收藏 评论

云顶娱乐yd2221 3

仿效链接

  • IndexedDB的基本概念-MDN
  • 使用 IndexedDB-MDN
  • IndexedDB API接口-MDN
  • Indexed Database API 2.0 – w3c

    1 赞 2 收藏 1 评论

云顶娱乐yd2221 4

1.rect 矩形

XHTML

<rect x="10" y="10" width="30" height="30"/> <rect x="60" y="10" rx="10" ry="10" width="30" height="30"/>

1
2
<rect x="10" y="10" width="30" height="30"/>
<rect x="60" y="10" rx="10" ry="10" width="30" height="30"/>

SVG中rect要素用于绘制矩形、圆角矩形,含有6个宗旨品质用于调控矩形的造型以及坐标,具体如下:

x 矩形左上角x地方, 私下认可值为 0 y 矩形左上角y地方, 暗许值为 0 width 矩形的上升的幅度, 无法为负值不然报错, 0 值不绘制 height 矩形的莫斯中国科学技术大学学, 无法为负值不然报错, 0 值不绘制 rx 圆角x方向半径, 不可能为负值不然报错 ry 圆角y方向半径, 无法为负值不然报错

1
2
3
4
5
6
x 矩形左上角x位置, 默认值为 0
y 矩形左上角y位置, 默认值为 0
width 矩形的宽度, 不能为负值否则报错, 0 值不绘制
height 矩形的高度, 不能为负值否则报错, 0 值不绘制
rx 圆角x方向半径, 不能为负值否则报错
ry 圆角y方向半径, 不能为负值否则报错

那边须求小心,rxry 的还应该有如下法则:

  • rxry 都不曾安装, 则 rx = 0 ry = 0
  • rxry 有贰个值为0, 则约等于 rx = 0 ry = 0,圆角不算
  • rxry 有二个被安装, 则全部取那些棉被服装置的值
  • rx 的最大值为 width 的一半, ry 的最大值为 height 的一半
JavaScript

rx = rx || ry || 0; ry = ry || rx || 0;   rx = rx &gt; width / 2 ?
width / 2 : rx; ry = ry &gt; height / 2 ? height / 2 : ry;   if(0
=== rx || 0 === ry){ rx = 0, ry = 0;
//圆角不生效,等同于,rx,ry都为0 }

<table>
<colgroup>
<col style="width: 50%" />
<col style="width: 50%" />
</colgroup>
<tbody>
<tr class="odd">
<td><div class="crayon-nums-content" style="font-size: 13px !important; line-height: 15px !important;">
<div class="crayon-num" data-line="crayon-5b8f49eccc27a188181481-1">
1
</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5b8f49eccc27a188181481-2">
2
</div>
<div class="crayon-num" data-line="crayon-5b8f49eccc27a188181481-3">
3
</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5b8f49eccc27a188181481-4">
4
</div>
<div class="crayon-num" data-line="crayon-5b8f49eccc27a188181481-5">
5
</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5b8f49eccc27a188181481-6">
6
</div>
<div class="crayon-num" data-line="crayon-5b8f49eccc27a188181481-7">
7
</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5b8f49eccc27a188181481-8">
8
</div>
<div class="crayon-num" data-line="crayon-5b8f49eccc27a188181481-9">
9
</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5b8f49eccc27a188181481-10">
10
</div>
</div></td>
<td><div class="crayon-pre" style="font-size: 13px !important; line-height: 15px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;">
<div id="crayon-5b8f49eccc27a188181481-1" class="crayon-line">
rx = rx || ry || 0;
</div>
<div id="crayon-5b8f49eccc27a188181481-2" class="crayon-line crayon-striped-line">
ry = ry || rx || 0;
</div>
<div id="crayon-5b8f49eccc27a188181481-3" class="crayon-line">
 
</div>
<div id="crayon-5b8f49eccc27a188181481-4" class="crayon-line crayon-striped-line">
rx = rx &gt; width / 2 ? width / 2 : rx;
</div>
<div id="crayon-5b8f49eccc27a188181481-5" class="crayon-line">
ry = ry &gt; height / 2 ? height / 2 : ry;
</div>
<div id="crayon-5b8f49eccc27a188181481-6" class="crayon-line crayon-striped-line">
 
</div>
<div id="crayon-5b8f49eccc27a188181481-7" class="crayon-line">
if(0 === rx || 0 === ry){
</div>
<div id="crayon-5b8f49eccc27a188181481-8" class="crayon-line crayon-striped-line">
rx = 0,
</div>
<div id="crayon-5b8f49eccc27a188181481-9" class="crayon-line">
ry = 0; //圆角不生效,等同于,rx,ry都为0
</div>
<div id="crayon-5b8f49eccc27a188181481-10" class="crayon-line crayon-striped-line">
}
</div>
</div></td>
</tr>
</tbody>
</table>

等等…啥是代码?

好问题!

网页本人其实是由一多级的俄语字符编写成的,这一个马耳他语字符称作“代码”(Code)。那么些乌克兰(Ukraine)语字符和平常的罗马尼亚语小说看起来大概,可是它们都是用一种自个儿(浏览器)能够看得懂的格式写成的。作者通过阅读这个葡萄牙语字符,掌握它,然后依照它的意思将您想要看的页面渲染出来。

别急,关于那个,我们在接下去的稿子中逐年道来。

1 赞 2 收藏 评论

云顶娱乐yd2221 5

HTML5 web通知API介绍

2015/04/17 · HTML5 · 2 评论云顶娱乐yd2221, · web通知

本文由 伯乐在线 - ElvisKang 翻译,周进林 校稿。未经许可,制止转发!
英语出处:www.sevensignature.com。招待插手翻译组。

云顶娱乐yd2221 6

在运用网页版Gmail的时候,每当收到新邮件,显示器的右下方都会弹出相应的提示框。借助HTML5提供的Notification API,大家也足以轻松完毕如此的成效。

DOM成分querySelectorAll只怕让您意料之外的特征表现

2015/11/07 · HTML5 · DOM, querySelectorAll

原稿出处: 张鑫旭   

七、关闭和删除数据库

  • 闭馆数据库只供给在数据库对象db上调用close()格局就能够
db.close();

<table>
<colgroup>
<col style="width: 50%" />
<col style="width: 50%" />
</colgroup>
<tbody>
<tr class="odd">
<td><div class="crayon-nums-content" style="font-size: 13px !important; line-height: 15px !important;">
<div class="crayon-num" data-line="crayon-5b8f37afae779476637224-1">
1
</div>
</div></td>
<td><div class="crayon-pre" style="font-size: 13px !important; line-height: 15px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;">
<div id="crayon-5b8f37afae779476637224-1" class="crayon-line">
db.close();
</div>
</div></td>
</tr>
</tbody>
</table>


关闭数据库后,`db`对象仍然保存着该数据库的相关信息,只是无法再开启事务(调用开启事务方法会报错,提示数据库连接已断开):

云顶娱乐yd2221 7

  • 去除数据库则必要运用indexedDB.deleteDatabase(dbName)方法
JavaScript

window.indexedDB.deleteDatabase(dbName);

<table>
<colgroup>
<col style="width: 50%" />
<col style="width: 50%" />
</colgroup>
<tbody>
<tr class="odd">
<td><div class="crayon-nums-content" style="font-size: 13px !important; line-height: 15px !important;">
<div class="crayon-num" data-line="crayon-5b8f37afae77e452573671-1">
1
</div>
</div></td>
<td><div class="crayon-pre" style="font-size: 13px !important; line-height: 15px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;">
<div id="crayon-5b8f37afae77e452573671-1" class="crayon-line">
window.indexedDB.deleteDatabase(dbName);
</div>
</div></td>
</tr>
</tbody>
</table>

5.polyline 折线

XHTML

<polyline points="60 110, 65 120, 70 115, 75 130, 80 125, 85 140, 90 135, 95 150, 100 145"/>

1
<polyline points="60 110, 65 120, 70 115, 75 130, 80 125, 85 140, 90 135, 95 150, 100 145"/>

polyline是一组连接在一块的直线。因为它能够有广大的点,折线的的全数一点点地方都坐落多个points属性中:

points 点集数列,各种数字用空白、逗号、终止命令符可能换行符分隔离,每种点必得带有2个数字,多少个是x坐标,三个是y坐标 如0 0, 1 1, 2 2”

1
points 点集数列,每个数字用空白、逗号、终止命令符或者换行符分隔开,每个点必须包含2个数字,一个是x坐标,一个是y坐标 如0 0, 1 1, 2 2”

当你张开网页的时候,世界都发出了哪些(1)

2015/09/10 · HTML5, JavaScript · 网页

最先的作品出处: 吴迪   

你有未有好奇过,当您策绘画作品展览开贰个网页的时候,那么些世界上都发出了一部分怎么着职业?会不会因为您手气键落,发生了连锁反应,指尖的风拂起千年后您梦里的那多少个女孩的刘海?咳,亦非从未也许。昨东瀛身就来报告您会生出哪些业务,你可以沏一壶茶,坐在躺椅上,渐渐品尝……

时光倒流到您刚刚打开这些页面包车型地铁那弹指间…

Hi!大家好,小编的名字叫做浏览器,作者还应该有个很酷的意大利语名字叫做Browser!很欢愉认知您!

云顶娱乐yd2221 8

哪些,你想大多度?没难点!请您告诉本人刹那间,百度的地址是哪些?或许说,百度的URL是什么?

对了,给您介绍一下U奇骏L,全称Unified Resource Locator,中文名叫联独能源定位符,也便是大家俗称的网址。它就好像互联互连网的门牌同样,而浏览器就恍如大巴司机。你一旦告诉浏览器你想要看的网页的UXC90L,他就能够把您载到这里啦!

云顶娱乐yd2221 9

哦,百度的地址是http://baidu.com是啊,好嘞!笔者后天就起首帮您去把这些网页给请过来。

先是,小编先要找到那些网页的家在何地。网页的家有一个名字叫做服务器,它的乌克兰语名为做Server。服务器本身其实也是一台微型Computer,跟你家中的计算机其实是极度相似的。只不过比较起来,服务器品质会比经常的微管理器的属性来得强劲,因为它必要劳务广大个人!

云顶娱乐yd2221 10

那么如此多的服务器,作者怎么找到百度所在的十一分服务器呢?就靠你刚刚告诉作者的U奥迪Q3L了!U安德拉L只是服务器地址的叁个比较满足的名字而已,小编从不章程直接通过这么些地址找到服务器。其实啊,在服务器的社会风气中间,他们还会有一种更确切的地点表达方式,叫做IP地址。

插一嘴:IP地址是怎么样,它是怎么职业的,也许能够写一些本书了。轻易地说,IP地址正是形同192.168.0.1这种样式的数字和阿尔巴尼亚语句号的构成。你能够把它看成相对U大切诺基L来说更纯粹的地方。

自个儿找到IP地址的章程实在很简短,小编就算请操作系统(OS, Operating System)援助就好了。所谓的操作系统,便是近似Windows、Mac OS同样的软件,你可见在它们上边安装精彩纷呈的软件。当中Mac OS是苹果Computer专项使用的操作系统。

云顶娱乐yd2221 11

其一从U兰德奥迪Q3L到IP地址的进度叫做DNS查找,即DNS Lookup。天啊,又多少个新名词!无妨,你无需记住那一个名词。你所急需知道的是,这里就好像操作系统独自一点也不慢地成功了那些进程,可是事实上它为此所做的事情至极复杂。我们之后将有特地的作品用来介绍这一进程。

怎样初叶

JavaScript

var notification=new Notification(‘Notification Title',{ body:'Your Message' });

1
2
3
var notification=new Notification(‘Notification Title',{
    body:'Your Message'
});

地点的代码构造了二个简陋的文告栏。构造函数的率先个参数设定了文告栏的标题,而第3个参数则是八个option 对象,该对象可设置以下属性:

  • body :设置公告栏的正文内容。
  • dir :定义通告栏文本的体现方向,可设为auto(自动)、ltr(从左到右)、rtl(从右到左)。
  • lang :证明公告栏内文本所使用的语种。(译注:该属性的值必需属于BCP 47 language tag。)
  • tag:为通告栏分配七个ID值,便于寻觅、替换或移除通告栏。
  • icon :设置作为布告栏icon的图样的ULacrosseL

一、时间当务之急,废话少说

正文所在的页面藏匿了上面那么些代码:

<img id="outside"> <div id="my-id"> <img id="inside"> <div class="lonely"></div> <div class="outer"> <div class="inner"></div> </div> </div>

1
2
3
4
5
6
7
8
<img id="outside">
<div id="my-id">
    <img id="inside">
    <div class="lonely"></div>
    <div class="outer">
        <div class="inner"></div>
    </div>
</div>

就是下边那样的展现(为了便于观望,笔者加了边框背景象和文字):

云顶娱乐yd2221 12

先是说点大家都驾驭的热热身。

  • querySelectorquerySelectorAll IE8+浏览器协理。
  • querySelector回来的是单个DOM成分;querySelectorAll归来的是NodeList.
  • 大家常常用的多的是document.querySelectorAll, 实际上,也支持dom.querySelectorAll.例如:
JavaScript

document.querySelector("#my-id").querySelectorAll("img")

<table>
<colgroup>
<col style="width: 50%" />
<col style="width: 50%" />
</colgroup>
<tbody>
<tr class="odd">
<td><div class="crayon-nums-content" style="font-size: 13px !important; line-height: 15px !important;">
<div class="crayon-num" data-line="crayon-5b8f2fbc48034065158916-1">
1
</div>
</div></td>
<td><div class="crayon-pre" style="font-size: 13px !important; line-height: 15px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;">
<div id="crayon-5b8f2fbc48034065158916-1" class="crayon-line">
document.querySelector(&quot;#my-id&quot;).querySelectorAll(&quot;img&quot;)
</div>
</div></td>
</tr>
</tbody>
</table>

挑选的就是个中这么些妹子。比方,笔者在决定台出口该选拔NodeList的尺寸和id,如下截图:
云顶娱乐yd2221 13

好了,下面都以人所共知的,好,上面初始呈现点有趣的。

大家看下下边2行轻便的查询语句:

宗旨造型转变那个事,基本选取。JavaScript

document.querySelectorAll("#my-id div div");

1
document.querySelectorAll("#my-id div div");

JavaScript

document.querySelector("#my-id").querySelectorAll("div div");

1
document.querySelector("#my-id").querySelectorAll("div div");

云顶娱乐yd2221 14

提问:上边七个语句再次回到的NodeList的源委是或不是是一样的?

给大家1分钟的时刻动脑筋下。

//zxx: 假使1分钟已经谢世了

好了,答案是:分歧等的。估量不菲人跟本人同样,会感到是毫发不爽的。

实际上:

JavaScript

document.querySelectorAll("#my-id div div").length === 1;

1
document.querySelectorAll("#my-id div div").length === 1;

JavaScript

document.querySelector("#my-id").querySelectorAll("div div").length === 3;

1
document.querySelector("#my-id").querySelectorAll("div div").length === 3;

我们只要有疑难,能够在调控台测量检验下,下图正是自个儿要好测量试验的结果:

云顶娱乐yd2221 15

干什么会那样?

先是个切合我们的知道,不说明。那下三个口舌,为何再次来到的NodeList长度是3呢?

首先,遍历该NodeList会发觉,查询的多个dom成分为:div.lonelydiv.outerdiv.inner.

想不到,诡异,怎会是3个吗?

jQuery中有个find()方法,我们很或者遭到这些主意影响,导致现身了一部分体味的标题:

JavaScript

$("#my-id").find("div div").length === 1;

1
$("#my-id").find("div div").length === 1;

假定利用find方法,则是1个门户大概;由于组织和意义类似,大家很当然疑问原生的querySelectorAll也是那些套路。真是太错特错!!

要解释,为何NodeList长度是3,只要一句话就能够了,笔者非常加粗标红:

CSS选取器是单身于全部页面包车型大巴!

如何意思吧?举例说你在页面很深的一个DOM里面写上:

<style> div div { } </style>

1
2
3
<style>
div div { }
</style>

 

所有事网页,满含父级,只借使满足div div老爹和儿子关系的要素,全部会被选中,对啊,那些我们应该都知晓的。

这里的querySelectorAll个中的采取器也一样是那也全局特性。document.querySelector("#my-id").querySelectorAll("div div")翻译成白话文就是:查询#my-id的子成分,同期满足万事页面下div div接纳器条件的DOM成分们。

我们页面往上滚动看看原始的HTML结构,会发掘,在全局视野下,div.lonelydiv.outerdiv.inner全部都满意div div以此选取器条件,于是,最后回到的长度为3.

总结

  1. 使用indexedDB.open(dbName, version)展开三个数据库连接
  2. 使用indexedDB.deleteDatabase(dbName)删去贰个数据库
  3. 在数据库对象db上使用createObjectStore(storeName, config)创设对象存款和储蓄空间
  4. 在指标存款和储蓄空间objectStore上使用createIndex(indexName, keyName, config)创造索引
  5. 对数据库的操作都亟需经过事务完成: var transction = db.transaction([storeName], mode)
  6. 数据库的增加和删除改查均经过objectStore指标完结,var objectStore = transaction.objectStore(storeName)
  7. 对数据库数据操作有: add()get()delete()put等方法
  8. 寻觅数据足以行使索引: objectStore.index(indexName)
  9. 遍历和过滤数据足以选拔游标: openCursor(keyRange, direction)

1.rect to path

正如图所示,一个 rect 是由 4 个弧和 4 个线段构成;倘诺 rect 未有安装 rx 和 ry 则 rect 只是由 4 个线段构成。rect 转换为 path 只须要将 A ~ H 之间的弧和线段依次实现就能够。

云顶娱乐yd2221 16

JavaScript

function rect2path(x, y, width, height, rx, ry) { /* * rx 和 ry 的平整是: * 1. 假诺中间一个装置为 0 则圆角不生效 * 2. 万一有多个尚无设置则取值为另一个 */ rx = rx || ry || 0; ry = ry || rx || 0;   //非数值单位测算,如当宽度像百分之百则移除 if (isNaN(x - y + width - height + rx - ry)) return;   rx = rx > width / 2 ? width / 2 : rx; ry = ry > height / 2 ? height / 2 : ry;   //要是在那之中二个设置为 0 则圆角不奏效 if(0 == rx || 0 == ry){ // var path = // 'M' + x + ' ' + y

  • // 'H' + (x + width) + 不引入用相对路线,相对路径节省代码量 // 'V' + (y + height) + // 'H' + x + // 'z'; var path = 'M' + x + ' ' + y + 'h' + width + 'v' + height + 'h' + -width + 'z'; }else{ var path = 'M' + x + ' ' + (y+ry) + 'a' + rx + ' ' + ry + ' 0 0 1 ' + rx + ' ' + (-ry) + 'h' + (width - rx - rx) + 'a' + rx + ' ' + ry + ' 0 0 1 ' + rx + ' ' + ry + 'v' + (height - ry -ry) + 'a' + rx + ' ' + ry + ' 0 0 1 ' + (-rx) + ' '
  • ry + 'h' + (rx + rx -width) + 'a' + rx + ' ' + ry + ' 0 0 1 ' + (-rx)
  • ' ' + (-ry) + 'z'; }   return path; }
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
function rect2path(x, y, width, height, rx, ry) {
/*
* rx 和 ry 的规则是:
* 1. 如果其中一个设置为 0 则圆角不生效
* 2. 如果有一个没有设置则取值为另一个
*/
rx = rx || ry || 0;
ry = ry || rx || 0;
 
//非数值单位计算,如当宽度像100%则移除
if (isNaN(x - y + width - height + rx - ry)) return;
 
rx = rx > width / 2 ? width / 2 : rx;
ry = ry > height / 2 ? height / 2 : ry;
 
//如果其中一个设置为 0 则圆角不生效
if(0 == rx || 0 == ry){
// var path =
// 'M' + x + ' ' + y +
// 'H' + (x + width) + 不推荐用绝对路径,相对路径节省代码量
// 'V' + (y + height) +
// 'H' + x +
// 'z';
var path =
'M' + x + ' ' + y +
'h' + width +
'v' + height +
'h' + -width +
'z';
}else{
var path =
'M' + x + ' ' + (y+ry) +
'a' + rx + ' ' + ry + ' 0 0 1 ' + rx + ' ' + (-ry) +
'h' + (width - rx - rx) +
'a' + rx + ' ' + ry + ' 0 0 1 ' + rx + ' ' + ry +
'v' + (height - ry -ry) +
'a' + rx + ' ' + ry + ' 0 0 1 ' + (-rx) + ' ' + ry +
'h' + (rx + rx -width) +
'a' + rx + ' ' + ry + ' 0 0 1 ' + (-rx) + ' ' + (-ry) +
'z';
}
 
return path;
}

收获响应

当服务器获得央求之后,经过一层层的劳作(恐怕是看似翻箱倒柜找质感之类的啊),最终将要送还给作者的资料,包含网页的代码,全体包装起来变成一个响应(Response),通过连接再次来到给本人。

响应是和呼吁对应的,贰个诉求对应多个响应。那就象是问难点一样,一问一答。所以,响应本身其实也正是一密密麻麻的德文字符,就好像这么:(上面包车型客车响应是被简化的本子)

HTTP/1.1 200 OK Date: Mon, 31 Aug 二〇一四 03:06:34 红霉素T Server: Apache Cache-Control: max-age=86400 Expires: Tue, 01 Sep 二〇一四 03:06:34 庆大霉素T Last-Modified: Tue, 12 Jan 二〇〇八 13:48:00 GMT ETag: "51-4b4c7d90" Accept-Ranges: bytes Content-Length: 81 Connection: Keep-Alive Content-Type: text/html <html> .... 此处省略N多行 </html>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
HTTP/1.1 200 OK
Date: Mon, 31 Aug 2015 03:06:34 GMT
Server: Apache
Cache-Control: max-age=86400
Expires: Tue, 01 Sep 2015 03:06:34 GMT
Last-Modified: Tue, 12 Jan 2010 13:48:00 GMT
ETag: "51-4b4c7d90"
Accept-Ranges: bytes
Content-Length: 81
Connection: Keep-Alive
Content-Type: text/html
 
<html>
    .... 此处省略N多行
</html>

您能够小心到,响应分为七个部分。在13行之上的有的称作响应头(Response Head),上边包车型大巴片段称作响应大旨(Response Body)。在那边,响应主旨正是网页的代码了。

云顶娱乐yd2221 17

好了,到最近截止,作者一度得到了网页的代码。

获得权力

在展现公告栏在此之前需向客商申请权限,独有顾客同意,公告栏才可出现在显示屏中。对权力申请的拍卖将有以下重回值:

  • default:客商管理结果未知,由此浏览器将视为客商拒绝弹出文告栏。(“浏览器:你没须求照管,笔者就不通告你了”)
  • denied:顾客拒绝弹出文告栏。(“客户:从自家的显示器里滚开”)
  • granted:客商同意弹出布告栏。(“客商:应接!笔者很惊奇能够使用那些公告功效”)
JavaScript

Notification.requestPermission(function(permission){ //display
notification here making use of constructor });

<table>
<colgroup>
<col style="width: 50%" />
<col style="width: 50%" />
</colgroup>
<tbody>
<tr class="odd">
<td><div class="crayon-nums-content" style="font-size: 13px !important; line-height: 15px !important;">
<div class="crayon-num" data-line="crayon-5b8f063d76a49818832322-1">
1
</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5b8f063d76a49818832322-2">
2
</div>
<div class="crayon-num" data-line="crayon-5b8f063d76a49818832322-3">
3
</div>
</div></td>
<td><div class="crayon-pre" style="font-size: 13px !important; line-height: 15px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;">
<div id="crayon-5b8f063d76a49818832322-1" class="crayon-line">
Notification.requestPermission(function(permission){
</div>
<div id="crayon-5b8f063d76a49818832322-2" class="crayon-line crayon-striped-line">
//display notification here making use of constructor
</div>
<div id="crayon-5b8f063d76a49818832322-3" class="crayon-line">
});
</div>
</div></td>
</tr>
</tbody>
</table>

用HTML创立三个按键

XHTML

<button id="button">Read your notification</button>

1
<button id="button">Read your notification</button>

不用遗忘了CSS

CSS

#button{ font-size:1.1rem; width:200px; height:60px; border:2px solid #df7813; border-radius:20px/50px; background:#fff; color:#df7813; } #button:hover{ background:#df7813; color:#fff; transition:0.4s ease; }

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#button{
  font-size:1.1rem;
  width:200px;
  height:60px;
  border:2px solid #df7813;
  border-radius:20px/50px;
  background:#fff;
  color:#df7813;
}
#button:hover{
  background:#df7813;
  color:#fff;
  transition:0.4s ease;
}

全部的Javascript代码如下:

JavaScript

document.addEventListener('DOMContentLoaded',function(){ document.getElementById('button').addEventListener('click',function(){ if(! ('Notification' in window) ){ alert('Sorry bro, your browser is not good enough to display notification'); return; } Notification.requestPermission(function(permission){ var config = { body:'Thanks for clicking that button. Hope you liked.', icon:'', dir:'auto' }; var notification = new Notification("Here I am!",config); }); }); });

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
document.addEventListener('DOMContentLoaded',function(){
        document.getElementById('button').addEventListener('click',function(){
            if(! ('Notification' in window) ){
                alert('Sorry bro, your browser is not good enough to display notification');
                return;
            }    
            Notification.requestPermission(function(permission){
                var config = {
                              body:'Thanks for clicking that button. Hope you liked.',
                              icon:'https://cdn2.iconfinder.com/data/icons/ios-7-style-metro-ui-icons/512/MetroUI_HTML5.png',
                              dir:'auto'
                              };
                var notification = new Notification("Here I am!",config);
            });
        });
    });

从这段代码能够见到,假如浏览器不协助Notification API,在点击按键时将会产出警示“兄弟,很对不起。你的浏览器并不可能很好地支撑通告功效”(Sorry bro, your browser is not good enough to display notification)。否则,在赢得了顾客的允许之后,大家自制的通告栏便能够出现在显示器中间啦。

干什么要让顾客手动关闭文告栏?

对于那一个标题,我们得以借助setTimeout函数设置三个日子间隔,使公告栏能定期关闭。

JavaScript

var config = { body:'Today too many guys got eyes on me, you did the same thing. Thanks', icon:'icon.png', dir:'auto' } var notification = new Notification("Here I am!",config); setTimeout(function(){ notification.close(); //closes the notification },5000);

1
2
3
4
5
6
7
8
9
var config = {
               body:'Today too many guys got eyes on me, you did the same thing. Thanks',
               icon:'icon.png',
               dir:'auto'
             }
var notification = new Notification("Here I am!",config);
setTimeout(function(){
    notification.close(); //closes the notification
},5000);

该说的东西就这一个了。假若你意犹未尽,希望越来越深入地驾驭Notification API,能够翻阅以下的页面:

  • MDN
  • Paul lund’s tutorial on notification API

二、:scope与区域选用范围

其实,要想querySelectorAll背后选择器不受全局影响,也可以有办法的,正是采取如今还处在试验阶段的:scope伪类,其功效便是让CSS是在某一限制内选取。此伪类在CSS中运用是金锭,不过也能够在querySelectorAll语句中利用:

JavaScript

document.querySelector("#my-id").querySelectorAll(":scope div div");

1
document.querySelector("#my-id").querySelectorAll(":scope div div");

包容性如下:

云顶娱乐yd2221 18

自家写此文时候是15年11月尾,最近差不离就FireFox浏览器扶助,笔者推断,以后,会帮忙越多的。为何吧?

因为Web Components供给它,能够完毕真正独立包装,不会受外部影响的HTML组件。

关于:scope近年来支撑尚浅,机遇未到,作者就没供给乱展开了,点到竣事。

二、创造、张开数据库

indexedDB 存在于全局对象window上, 它最重大的多少个艺术便是open主意, 该办法接收七个参数:

  • dbName // 数据库名称 [string]
  • version // 数据库版本 [整型number]

var DB_NAME = 'indexedDB-test', VERSION = 1, db; var request = indexedDB.open(DB_NAME, VEPRADOSION); request.onsuccess = function(event) { db = event.target.result; // console.log(event.target === request); // true db.onsuccess = function(event) { console.log('数据库操作成功!'); }; db.onerror = function(event) { console.error('数据库操作产生错误!', event.target.errorCode); }; console.log('展开数据库成功!'); }; request.onerror = function(event) { console.error('创制数据库出错'); console.error('error code:', event.target.errorCode); }; request.onupgradeneeded = function(event) { // 更新指标存款和储蓄空间和目录 .... };

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
var DB_NAME = 'indexedDB-test', VERSION = 1, db;
var request = indexedDB.open(DB_NAME, VERSION);
request.onsuccess = function(event) {
    db = event.target.result;
    // console.log(event.target === request); // true
    db.onsuccess = function(event) {
        console.log('数据库操作成功!');
    };
    db.onerror = function(event) {
        console.error('数据库操作发生错误!', event.target.errorCode);
    };
    console.log('打开数据库成功!');
};
request.onerror = function(event) {
    console.error('创建数据库出错');
    console.error('error code:', event.target.errorCode);
};
request.onupgradeneeded = function(event) {
   // 更新对象存储空间和索引 ....
};

要是本域下官样文章名称为DB_NAME的数据库,则上述代码会创立二个名称为DB_NAME、版本号为VERSION的数据库; 触发的事件依次为: upgradeneededsuccess.

尽管已存在名称为DB_NAME的数据库, 则上述代码会展开该数据库; 只触及success/error事件,不会触发upgradeneeded事件. db是对该数据库的援用.

2.circle/ellipse to path

圆可说是是一种独特的椭圆,即 rx 与 ry 相等的扁圆形,所以能够献身一块儿谈谈。 椭圆可以当作A点到C做180度顺时针画弧、C点到A做180度顺时针画弧就能够。

云顶娱乐yd2221 19

JavaScript

function ellipse2path(cx, cy, rx, ry) { //非数值单位测算,如当宽度像百分之百则移除 if (isNaN(cx - cy + rx - ry)) return;   var path = 'M' + (cx-rx) + ' ' + cy + 'a' + rx + ' ' + ry + ' 0 1 0 ' + 2*rx + ' 0' + 'a' + rx + ' ' + ry + ' 0 1 0 ' + (-2*rx) + ' 0' + 'z';   return path; }

1
2
3
4
5
6
7
8
9
10
11
12
function ellipse2path(cx, cy, rx, ry) {
//非数值单位计算,如当宽度像100%则移除
if (isNaN(cx - cy + rx - ry)) return;
 
var path =
'M' + (cx-rx) + ' ' + cy +
'a' + rx + ' ' + ry + ' 0 1 0 ' + 2*rx + ' 0' +
'a' + rx + ' ' + ry + ' 0 1 0 ' + (-2*rx) + ' 0' +
'z';
 
return path;
}

本文由云顶娱乐发布,转载请注明来源:宗旨造型转变那个事,基本选取