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

让浏览器不再展现,Chrome开采者工具不完全指南

时间:2019-10-04 15:21来源:云顶娱乐
“等一下,我碰!”——常见的2D碰撞检查测量试验 2017/02/22 · HTML5 · 1评论 ·碰撞检查实验 原稿出处:坑坑洼洼实验室    “碰乜鬼嘢啊,碰走晒笔者滴靓牌”。想到“碰”就自然联

“等一下,我碰!”——常见的2D碰撞检查测量试验

2017/02/22 · HTML5 · 1 评论 · 碰撞检查实验

原稿出处: 坑坑洼洼实验室   

图片 1

“碰乜鬼嘢啊,碰走晒笔者滴靓牌”。想到“碰”就自然联想到了“麻将”这一宏大发明。当然除了“碰”,洗牌的时候也洋溢了各个『碰撞』。

好了,不赘述。直入主旨——碰撞检查评定。

在 2D 境遇下,常见的碰撞检测方法如下:

  • 外接图形决断法
    • 轴对称包围盒(Axis-Aligned Bounding Box),即无旋转矩形。
    • 圆形碰撞
  • 光明投射法
  • 握别轴定理
  • 其他
    • 地图格子划分
    • 像素检验

下文将由易到难的各种介绍上述种种碰撞检验方法:外接图形推断法 > 其他> 光线投射法 > 分离轴定理。

除此以外,有部分景色只要我们约定好限制条件,也能兑现大家想要的冲击,如下边包车型大巴碰壁反弹:

当球碰着边框就反弹(如x/y轴方向速度取反)。

JavaScript

if(ball.left < 0 || ball.right > rect.width) ball.velocityX = -ball.velocityX if(ball.top < 0 || ball.bottom > rect.height) ball.velocityY = -ball.velocityY

1
2
if(ball.left < 0 || ball.right > rect.width) ball.velocityX = -ball.velocityX
if(ball.top < 0 || ball.bottom > rect.height) ball.velocityY = -ball.velocityY

再譬喻当一位走到 100px 地方时不开展跳跃,就能够超出石头等等。

所以,某个场景只需通过设定到特别的参数就可以。

13个有助简化CSS3费用的工具

2011/05/18 · HTML5 · CSS3, HTML5

Web 开荒人士能由此CSS3为网址设计扩展不菲风尚成分,CSS3 对CSS标准做了比相当的大的改正。未来,本文将为你介绍12款有助于简化CSS3开支的工具。

1、CSS3Pie

同意在IE上应用CSS3三头的绚烂功能。

2、CSS3 Builder

经过该工具,你能够用临近利用photoshop特效的分界面来统一妄图复杂的CSS3 box模型。极度节约时间。

3、CSS3 Drop shadow generatr

透过滑块功效直观的统一打算阴影。只需复制已被活动创建的CSS代码并粘贴到CSS文件中便可。

4、Cascadr

非CSS3特有但却万分实用。允许输入HTML代码并能够侦测该代码中有着的内联CSS,将之从HTML中移除并增加到多少个单身的样式表中。

5、Border Radius.com

眼下最盛行的CSS3属性之一。有援助快捷创设圆角box模型并获得适当的CSS3代码。

6、Button Maker

同意创设优质的按键。使得CSS3 开关设计变得要命简便——只需收集颜色,调治半径,获取代码,粘贴代码至CSS文件就可以。

7、CSS3 Generator

运用实惠,有帮忙创立最流行的CSS3属性代码,如 @font-face, 奇骏GBA, text-shadow,border-radius等代码。

8、Modernizr

用来侦测浏览器是还是不是补助CSS3,能为成分增加类以此在体制表上对一定浏览器功效进行定点。例如,当浏览器不帮助多元背景时,”no-multiplebgs”就将被增多到成分上。

9、HTML5 & CSS3 Support

想通晓IE 8是还是不是扶助”text-shadow”属性?这就看看那张图片吧!该图片突显了颇有主流浏览器所协理的CSS3属性,极具实用性。

图片 2
(点击查阅大图)

10、CSS3 Gradient Generator

渐变生成器。只需收罗颜色、预览颜色,抓替代码并粘贴代码就能够。

11、CSS3 Please

特别管用的可让顾客复制并粘贴常见CSS3代码的站点。具备可供现场测验效果的预览区。

12、CSS3 Cheat Sheet

CSS3 cheat sheets有利于在编码进度中急速回忆性质及其语法。Smashing Magazine 成立了这几个图形,协助下载与打字与印刷。再正是扶助.gif格式预览。

原文:Jean-Baptiste Jung    译文:oschina

赞 1 收藏 评论

图片 3

HTTP Client Hints 介绍

2015/09/14 · HTML5 · 算法

初稿出处: imququ(@屈光宇)   

多年来几年各个 Web 技能一贯在爆炸式发展,每一日都有恢宏新东西涌现出来。针对这么些处境,业内两位大佬这两天程序发文表明了温馨的理念:Stop pushing the web forward、Is the web platform getting too big?。其实很早以前本人就开掘到以自个儿前段时间的生命力,吃透全部Web 新本事差不离是不恐怕做到的职分,小编关爱新技能的大旨放在了品质优化上。

后天自己要向大家介绍的手艺是:HTTP Client Hints,也与天性优化有关。利用那项手艺,HTTP 顾客端(平日可以以为是浏览器)能够积极将一部分特征告诉服务端,以便服务端更有针对性地出口内容。那项才具由大家熟稔的 Ilya Grigorik 提出,最近还处于较为中期的等第,较为标准的陈述文书档案能够在那边找到。目前 Chrome 46 (beta) 已援救它,IE 和 Firefox 则还在虚拟中。

实在此前浏览器已经将众多自己特色放在 HTTP 央求中,比方上边这一个尾部字段:

  • User-Agent:提供浏览器类型及版本、操作系统及版本、浏览器内核等音信;
  • Accept:注脚浏览器辅助什么 MIME type(举个例子 Chrome 通过 Accept 注解本人协助 image/webp 图片格式);
  • Accept-Encoding:申明本浏览器帮忙什么内容编码方式(举例:gzip、deflate、sdch);
  • Accept-Language:阐明本浏览器援救那几个语言;

透过以上那几个底部字段,大家早就可以本着不一样顾客端输出不一致内容。举个例子本博客对辅助Webp 格式的浏览器会采纳 Webp 来压缩图片大小;本博客还恐怕会透过 User-Agent 针对 IE 老版本禁止使用 localStorage 缓存计谋。

不过有一对浏览器性情,大家无法直接拿走,如荧屏分辨率、设备像素比(devicePixelRatio)、客商带宽等。而在运动 Web 中,为了尽恐怕节约客户流量,须要输出尺寸最合适的图片财富。为了化解那几个标题,常见的方案有:1)使用 JS 获取那些特色,动态拼接图片 U奥迪Q5L;2)使用 HTML 中的 sizes 和 srcset 属性、picture 标签或 CSS 中的 image-set 属性来兑现响应式图片。方案 1 很简短,这里略过;方案 2 网络有好些个唇揭齿寒小说,素不相识的校友可以自动物检疫索「响应式图片」理解下。

此处看三个接纳方案 2 中涉嫌的 picture、sizes 和 srcset 实现的响应式图片代码(via):

<picture> <!-- serve WebP to Chrome and Opera --> <source media="(min-width: 50em)" sizes="50vw" srcset="/image/thing-200.webp 200w, /image/thing-400.webp 400w, /image/thing-800.webp 800w, /image/thing-1200.webp 1200w, /image/thing-1600.webp 1600w, /image/thing-2000.webp 2000w" type="image/webp"> <source sizes="(min-width: 30em) 100vw" srcset="/image/thing-crop-200.webp 200w, /image/thing-crop-400.webp 400w, /image/thing-crop-800.webp 800w, /image/thing-crop-1200.webp 1200w, /image/thing-crop-1600.webp 1600w, /image/thing-crop-2000.webp 2000w" type="image/webp"> <!-- serve JPEGXR to Edge --> <source media="(min-width: 50em)" sizes="50vw" srcset="/image/thing-200.jpgxr 200w, /image/thing-400.jpgxr 400w, /image/thing-800.jpgxr 800w, /image/thing-1200.jpgxr 1200w, /image/thing-1600.jpgxr 1600w, /image/thing-2000.jpgxr 2000w" type="image/vnd.ms-photo"> <source sizes="(min-width: 30em) 100vw" srcset="/image/thing-crop-200.jpgxr 200w, /image/thing-crop-400.jpgxr 400w, /image/thing-crop-800.jpgxr 800w, /image/thing-crop-1200.jpgxr 1200w, /image/thing-crop-1600.jpgxr 1600w, /image/thing-crop-2000.jpgxr 2000w" type="image/vnd.ms-photo"> <!-- serve JPEG to others --> <source media="(min-width: 50em)" sizes="50vw" srcset="/image/thing-200.jpg 200w, /image/thing-400.jpg 400w, /image/thing-800.jpg 800w, /image/thing-1200.jpg 1200w, /image/thing-1600.jpg 1600w, /image/thing-2000.jpg 2000w"> <source sizes="(min-width: 30em) 100vw" srcset="/image/thing-crop-200.jpg 200w, /image/thing-crop-400.jpg 400w, /image/thing-crop-800.jpg 800w, /image/thing-crop-1200.jpg 1200w, /image/thing-crop-1600.jpg 1600w, /image/thing-crop-2000.jpg 2000w"> <!-- fallback for browsers that don't support picture --> <img src="/image/thing.jpg" width="50%"> </picture>

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
<picture>
  <!-- serve WebP to Chrome and Opera -->
  <source
    media="(min-width: 50em)"
    sizes="50vw"
    srcset="/image/thing-200.webp 200w, /image/thing-400.webp 400w,
        /image/thing-800.webp 800w, /image/thing-1200.webp 1200w,
        /image/thing-1600.webp 1600w, /image/thing-2000.webp 2000w"
    type="image/webp">
  <source
    sizes="(min-width: 30em) 100vw"
    srcset="/image/thing-crop-200.webp 200w, /image/thing-crop-400.webp 400w,
        /image/thing-crop-800.webp 800w, /image/thing-crop-1200.webp 1200w,
        /image/thing-crop-1600.webp 1600w, /image/thing-crop-2000.webp 2000w"
    type="image/webp">
  <!-- serve JPEGXR to Edge -->
  <source
    media="(min-width: 50em)"
    sizes="50vw"
    srcset="/image/thing-200.jpgxr 200w, /image/thing-400.jpgxr 400w,
        /image/thing-800.jpgxr 800w, /image/thing-1200.jpgxr 1200w,
        /image/thing-1600.jpgxr 1600w, /image/thing-2000.jpgxr 2000w"
    type="image/vnd.ms-photo">
  <source
    sizes="(min-width: 30em) 100vw"
    srcset="/image/thing-crop-200.jpgxr 200w, /image/thing-crop-400.jpgxr 400w,
        /image/thing-crop-800.jpgxr 800w, /image/thing-crop-1200.jpgxr 1200w,
        /image/thing-crop-1600.jpgxr 1600w, /image/thing-crop-2000.jpgxr 2000w"
    type="image/vnd.ms-photo">
  <!-- serve JPEG to others -->
  <source
    media="(min-width: 50em)"
    sizes="50vw"
    srcset="/image/thing-200.jpg 200w, /image/thing-400.jpg 400w,
        /image/thing-800.jpg 800w, /image/thing-1200.jpg 1200w,
        /image/thing-1600.jpg 1600w, /image/thing-2000.jpg 2000w">
  <source
    sizes="(min-width: 30em) 100vw"
    srcset="/image/thing-crop-200.jpg 200w, /image/thing-crop-400.jpg 400w,
        /image/thing-crop-800.jpg 800w, /image/thing-crop-1200.jpg 1200w,
        /image/thing-crop-1600.jpg 1600w, /image/thing-crop-2000.jpg 2000w">
  <!-- fallback for browsers that don't support picture -->
  <img src="/image/thing.jpg" width="50%">
</picture>

这段冗长的代码只是为着达成一张响应式图片,即使有局地言过其实,实际应用时日常不会写那样全,但从当中能够获得二个定论:在客商端完毕的宗旨更加的多,HTML 容量就越大越冗余,可维护性和可读性就越差。

而利用了 HTTP Client Hints 之后,浏览器在页面发起子财富诉求时,会因而新添的一雨后春笋尾部字段带上分辨率、设备像素比、图片宽度等音讯,使得各个繁复的战术能够挪到服务端去贯彻了。上面来看一看具体细节:

第一,有了支撑 HTTP Client Hints 的浏览器之后,页面上还亟需显式启用它。那是因为不是有着服务端都落到实处了响应式输出战术,每一遍都发送这个新增添的头顶恐怕会促成浪费。

与未来同一,那个意义也足以透过 HTTP 响应头和 meta 标签二种格局拉开并配置:

Accept-CH: DPR, Width, Viewport-Width

1
Accept-CH: DPR, Width, Viewport-Width

或:

<meta http-equiv="Accept-CH" content="DPR, Width, Viewport-Width">

1
<meta http-equiv="Accept-CH" content="DPR, Width, Viewport-Width">

在启用了 HTTP Client Hints 的页面中,全数子能源哀告(无论怎么着品种,无论怎么着措施创制),都会带走 Accept-CH 属性中所指明的头顶,比如:

Accept: image/webp,image/*,*/*;q=0.8 Accept-Encoding: gzip, deflate, sdch Accept-Language: zh-CN,zh;q=0.8,en;q=0.6,en-US;q=0.4,ja;q=0.2,de;q=0.2,zh-TW;q=0.2,cs;q=0.2,pt;q=0.2,ko;q=0.2 Connection: keep-alive DPR: 2 Host: qgy18.imququ.com User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.13 Safari/537.36 Viewport-Width: 1280 Width: 128

1
2
3
4
5
6
7
8
9
Accept: image/webp,image/*,*/*;q=0.8
Accept-Encoding: gzip, deflate, sdch
Accept-Language: zh-CN,zh;q=0.8,en;q=0.6,en-US;q=0.4,ja;q=0.2,de;q=0.2,zh-TW;q=0.2,cs;q=0.2,pt;q=0.2,ko;q=0.2
Connection: keep-alive
DPR: 2
Host: qgy18.imququ.com
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.13 Safari/537.36
Viewport-Width: 1280
Width: 128

有了那些尾部,图片服务器能够知晓顾客端的 devicePixelRatio 是 2、图片宽度是 128px、帮助 Webp 格式,所以输出 256px 的双倍 Webp 图最合适。可是浏览器怎么精晓那一个图片供给用作双倍图来使用啊(也正是说依旧显得为 128px)?那就须要在响应头中增添上面这几个字段作为 DP大切诺基 的作答:

Content-DPR: 2

1
Content-DPR: 2

内需小心的是,央求头中的 Width 字段,是依据 img 标签上的 sizes 属性算出来的。假使图片并未有一点点名 sizes,或许图片乞求是经过 JS 制造的,浏览器不可能获知 Width,也就不会教导那么些底部。

骨子里,除了 DPLacrosse、Viewport-Width 和 Width 之外,文书档案还鲜明了四个字段,但是经过自身的测量试验 Chrome 46 并不曾协理它们,这里差十分少介绍下:

  • Downlink:用来提示当前网络的下行链路带宽,单位是 Mbps;
  • Save-Data:用来提醒当前浏览器是还是不是工作在省流形式之下,取值为 1 或 0;

能够看出那多个性情,也是为了尽恐怕给客商节省带宽而设计的。能够预知,后续还有越来越多字段加到 HTTP Client Hints 合同中来。随着 HTTP/2 的广泛,尾部压缩使得扩充多少个尾部字段带来的费用变得异常的小了。

值得注意的是,使用了 HTTP Client Hints 之后,服务端针对同三个 U卡宴L 大概会输出分化的内容,所以随意中间节点,仍然浏览器,在促成响应 Cache 时必得小心,须要针对分裂的情况缓存多份内容。那亟需用到 HTTP/1 中的  Vary 响应头,举个例子:

Vary: DPR, Width, Downlink

1
Vary: DPR, Width, Downlink

标注要是急需缓存这么些响应,在生成缓存 Key 的时候供给将需求头中的 DPCRUISER、Width 和 Downlink 的值总结进去。

好了,HTTP Client Hints 才能就介绍到此地。很安慰地看出,大部分 Web 新技术都以在给 HTML、CSS 和 JavaScript 扩大效果和特征,而那项本领却是把前面复杂的代码和逻辑以往移,让大家的 HTML 代码能够轻装参预比赛。一些开源图片管理类别现已上马支持那些新特征了,国外的部分 CDN 托管服务一定也在捋臂将拳,笔者卓殊愿意它的前程。

1 赞 收藏 评论

图片 4

让浏览器不再显示 https 页面中的 http 央浼警报

2015/08/26 · 基础本领 · HTTPS, 浏览器

原来的书文出处: 李靖(@Barret李靖)   

HTTPS 是 HTTP over Secure Socket Layer,以安全为对象的 HTTP 通道,所以在 HTTPS 承载的页面上不容许出现 http 央求,一旦出现就是唤醒或报错:

Mixed Content: The page at ‘‘ was loaded over HTTPS, but requested an insecure image ‘’. This content should also be served over HTTPS.

HTTPS更换之后,我们得以在很多页面中观看如下警报:

图片 5

洋洋营业对 https 未有技艺概念,在填充的多寡中难免出现 http 的能源,连串强大,出现马虎和漏洞也是不可幸免的。

Chrome开荒者工具不完全指南:(三、品质篇)

2015/06/29 · HTML5 · 2 评论 · Chrome

初稿出处: 卖撸串夫斯基   

卤煮在前头已经向大家介绍了Chrome开荒者工具的一部分效果与利益面板,在那之中包罗ElementsNetworkResources基础作用部分和Sources进级效能部分,对于平常的网址项目以来,其实便是索要那多少个面板成效就足以了(再加上console面板这一个万香精油)。它们的效应超越56%情状下是帮忙你实行功效开辟的。不过在您付出应用等第的网址项指标时候,随着代码的加码,功用的充实,品质会日益改为您需求关怀的部分。那么网址的属性难题具体是指什么呢?在卤煮看来,三个网址的性质首要涉及两项,一是加载品质、二是推行品质。第一项能够运用Network来剖判,作者然后会另行写一篇关于它的文章分享卤煮的滋长加载速度的经验,然而从前,我生硬推荐你去阅读《web高质量开采指南》那本书中的十四条黄金建议,那是小编读书过的最经典的书本之一,就算独有短短的一百多页,但对您的助手确实无法估摸的。而第二项品质问题就浮未来内部存款和储蓄器走漏上,那也是我们这篇文章钻探的标题——通过Timeline来分析你的网址内部存款和储蓄器走漏。

虽说浏览器一日千里,每三回网址版本的创新就意味着JavaScript、css的进程更是急迅,但是作为一名前端职员,是很有不能缺少去发掘项目中的品质的鸡肋的。在不菲属性优化中,内部存款和储蓄器走漏相比较于别的质量破绽(互联网加载)不易于觉察和消除,因为内部存款和储蓄器败露设计到浏览器管理内部存款和储蓄器的有些建制何况还要提到到到你的编辑的代码质量。在部分小的门类中,当内部存款和储蓄器败露还不足以让您重视,但随着项目复杂度的添加,内部存款和储蓄器难点就能够暴表露来。首先内部存储器占领过多导致你的网址响应速度(非ajax)变得慢,就认为到温馨的网页卡死了同等;然后你探访到任务管理器的内部存款和储蓄器占用率大涨;到结尾Computer以为死了机一样。这种意况在小内部存储器的器具上情形会尤其严重。所以,找到内部存款和储蓄器败露何况化解它是管理那类难题的至关重大。

在本文中,卤煮会通过个人和官方的例证,帮衬各位领会Timeline的选拔办法和剖析数据的主意。首先我们照样为该面板区分为八个区域,然后对它们中间的顺序职能进行每种介绍:

图片 6

虽然Timeline在实施它的职分时会显得花花绿绿令人目迷五色,可是不用忧虑,卤煮用一句话回顾它的效果正是:描述您的网址在好哪天候做的事体和突显出的景色。大家看下区域第11中学的成效先:

图片 7

在区域1核心是多个从左到右的时间轴,在运作时它当中会突显出各类颜色块(下文中会介绍)。最上部有一条工具栏,从左到右,一回表示:

1、最初运维Timeline检查测验网页。点亮圆点,Timline开班监听专门的学业,在此熄灭圆点,Timeline体现出监听阶段网址的实市价况。

2、清除全体的监听新闻。将Timeline复原。

3、查找和过滤监察和控制音信。点击会弹出二个小框框,里面能够寻觅照旧呈现掩盖你要找的新闻。

4、手动回收你网址内内存垃圾。

5、View:监察和控制音信的显示格局,近来有三种,柱状图和条状图,在显示的例子中,卤煮暗许选项条状图。

6、在侦听进程中希望抓取的新闻,js酒馆、内部存款和储蓄器、绘图等。。。。

区域2是区域1的完全版,即便她们都以显得的音讯视图,在在区域2种,图示会变得越来越详细,越来越精准。日常大家查阅监察和控制视图都在区域2种实行。

区域3是显得的是某个内存音信,总共会有四条曲线的变通。它们对应代表如下图所示:

图片 8

区域4中显示的是在区域2种某种行为的详细音讯和图纸音讯。

在对职能做了简约的介绍之后我们用几个测量检验用例来精通一下Timeline的具体用法。

XHTML

<!DOCTYPE html> <html> <head> <title></title> <style type="text/css"> div{ height: 20px; widows: 20px; font-size: 26px; font-weight: bold; } </style> </head> <body> <div id="div1"> HELLO WORLD0 </div> <div id="div2"> HELLO WORLD2 </div> <div id="div3"> HELLO WORLD3 </div> <div id="div4"> HELLO WORLD4 </div> <div id="div5"> HELLO WORLD5 </div> <div id="div6"> HELLO WORLD6 </div> <div id="div7"> HELLO WORLD7 </div> <button id="btn">click me</button> <script type="text/javascript"> var k = 0; function x() { if(k >= 7) return; document.getElementById('div'+(++k)).innerHTML = 'hello world' } document.getElementById('btn').addEventListener('click', x); </script> </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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<!DOCTYPE html>
<html>
<head>
    <title></title>
    <style type="text/css">
        div{
            height: 20px;
            widows: 20px;
            font-size: 26px;
            font-weight: bold;
        }
    </style>
</head>
<body>
    <div id="div1">
        HELLO WORLD0
    </div>
    <div id="div2">
        HELLO WORLD2
    </div>
    <div id="div3">
        HELLO WORLD3
    </div>
    <div id="div4">
        HELLO WORLD4
    </div>
    <div id="div5">
        HELLO WORLD5
    </div>
    <div id="div6">
        HELLO WORLD6
    </div>
    <div id="div7">
        HELLO WORLD7
    </div>
    <button id="btn">click me</button>
    <script type="text/javascript">
        var k = 0;
        function x() {
            if(k >= 7) return;
            document.getElementById('div'+(++k)).innerHTML = 'hello world'
        }
        document.getElementById('btn').addEventListener('click', x);
    
    </script>
</body>
</html>

新建贰个html项目,然后再Chrome中开垦它,接着按F12切换成开辟者形式,选用Timeline面板,点亮区域1左上角的要命小圆圈,你能够看见它成为了新民主主义革命,然后最早操作分界面。一而再按下button实践我们的js程序,等待全部div的内容都产生hello world的时候重新点击小圆圈,熄灭它,那时候你就能够旁观Timeline中的图表音讯了,如下图所示:

图片 9

在区域第11中学,左下角有一组数字2.0MB-2.1MB,它的意思是在您刚刚操作分界面这两天内,内部存款和储蓄器增加了0.1MB。尾巴部分那块淡黄色的区域是内部存款和储蓄器变化的暗中表示图。从左到右,大家能够看看刚刚浏览器监听了五千ms左右的表现动作,从0~5000ms内区域第11中学列出了具备的处境。接下来大家来留心深入分析一下这么些情状的切实新闻。在区域2种,滚动鼠标的滚轮,你拜访到时间轴会放大裁减,以往大家乘机滚轮不断压缩时间轴的范围,大家能够看见局地家家户户颜色的横条:

图片 10

在操作分界面时,大家点击了一回button,它开销了大约1ms的岁月成功了从响应事件到重绘节目标片段列动作,上海体育场面正是在789.6ms-790.6ms中完成的本次click事件所发生的浏览器行为,其余的平地风波作为您同样可以由此滑行滑轮降低区域来观望他们的动静。在区域2种,每一类颜色的横条其实都表示了它自个儿的非常的意义:

图片 11

老是点击都回到了地方的图一律进行多少事件,所以大家操作分界面时产生的事体能够做三个差相当少的垂询,我们滑动滚轮把时光轴苏醒到原始尺寸做个总体解析:

图片 12

能够观看,每三遍点击事件都陪伴着有些列的扭转:html的再度渲染,分界面重新布局,视图重绘。非常多状态下,种种事件的爆发都会挑起一体系的变型。在区域2种,大家能够透过点击某二个横条,然后在区域4种尤其详实地观测它的切切实实消息。大家以实行函数x为例观望它的实施期的意况。

图片 13

乘胜在事件发生的,除了dom的渲染和制图等事件的发出之外,相应地内部存款和储蓄器也会产生变化,而这种转移大家得以从区域3种见到:

图片 14

在上文中已经向大家做过区域3的介绍,大家得以看见js堆在视图中不停地再坚实,那时因为由事件产生的分界面绘制和dom重新渲染会促成内部存款和储蓄器的加码,所以每二次点击,导致了内部存款和储蓄器相应地增长。同样的,要是区域3种别的曲线的改换会引起深青莲线条的退换,那是因为别的(鹅黄代表的dom节点数、葡萄紫代表的轩然大波数)也会占用内存。因而,你可以通过深蓝曲线的更动时局来鲜明其余个数的变迁,当然最直观的章程便是观望括号中的数字变化。js内部存款和储蓄器的转移曲线是相比较复杂的,里面参杂了许多要素。我们所列出来的例子实际上是很简短的。近些日子相信您对Timeline的施用有了自然的认知,上边大家经过有个别Google浏览器官方的实例来更加好的摸底它的机能(因为见到示例都不可能不FQ,所以卤煮把js代码copy出来,至于简单的html代码你能够友善写。如若得以FQ的同室就不在意了!)

(合法测量试验用例一) 查看内部存款和储蓄器增加,代码如下:

JavaScript

var x = []; function createSomeNodes() { var div, i = 100, frag = document.createDocumentFragment(); for (;i > 0; i--) { div = document.createElement("div"); div.appendChild(document.createTextNode(i

  • " - "+ new Date().toTimeString())); frag.appendChild(div); } document.getElementById("nodes").appendChild(frag); } function grow() { x.push(new Array(一千000).join('x')); createSomeNodes();//不停地在分界面成立div成分 set提姆eout(grow,一千); }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var x = [];
 
function createSomeNodes() {
    var div,
        i = 100,
        frag = document.createDocumentFragment();
    for (;i > 0; i--) {
        div = document.createElement("div");
        div.appendChild(document.createTextNode(i + " - "+ new Date().toTimeString()));
        frag.appendChild(div);
    }
    document.getElementById("nodes").appendChild(frag);
}
function grow() {
    x.push(new Array(1000000).join('x'));
    createSomeNodes();//不停地在界面创建div元素
    setTimeout(grow,1000);
}

因而每每施行grow函数,大家在Timeline中看到了一张内部存款和储蓄器变化的图:

图片 15

因而上航海用教室能够看来js堆随着dom节点扩展而抓实,通过点击区域第11中学顶端的垃圾桶,能够手动回收部分内部存款和储蓄器。符合规律的内部存款和储蓄器深入分析图示锯齿形状(高低起伏,最后回归于伊始阶段的水平地点)并不是像上海教室那样阶梯式拉长,假若你见到黄绿线条未有下降的情事,並且DOM节点数没有回去到起初时的多少,你就足以可疑有内部存款和储蓄器败露了。

上面是三个用十分花招展现的常规例子,表达了内存被成立了又如何被回收。你能够见见曲线是锯齿型的左右起伏状态,在结尾js内部存款和储蓄器回到了初始的意况。(合法示例二)   js代码如下:

JavaScript

var intervalId = null, params; function createChunks() { var div, foo, i, str; for (i = 0; i < 20; i++) { div = document.createElement("div"); str = new Array(1000000).join('x'); foo = { str: str, div: div }; div.foo = foo; } } function start() { if (intervalId) { return; } intervalId = setInterval(createChunks, 1000); } function stop() { if (intervalId) { clearInterval(intervalId); } intervalId = null; }

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
var intervalId = null, params;
 
function createChunks() {
    var div, foo, i, str;
    for (i = 0; i < 20; i++) {
        div = document.createElement("div");
        str = new Array(1000000).join('x');
        foo = {
            str: str,
            div: div
        };
        div.foo = foo;
    }
}
 
function start() {
    if (intervalId) {
        return;
    }
    intervalId = setInterval(createChunks, 1000);
}
 
function stop() {
    if (intervalId) {
        clearInterval(intervalId);
    }
    intervalId = null;
}

实行start函数若干次,然后实行stop函数,能够生成一张内部存款和储蓄器剧烈变化的图:

图片 16

还应该有不菲合法实例,你能够通过它们来察看各个场合下内部存款和储蓄器的变通曲线,在这里大家不一一列出。在那边卤煮选取试图的格局是条状图,你能够在区域第11中学甄选其余的展现方式,这么些全靠个人的欣赏了。简单来说,Timeline能够扶助我们深入分析内部存款和储蓄器变化情状(提姆eline直译正是时间轴的意味啊),通过对它的观看比赛来鲜明本身的类型是还是不是存在着内部存款和储蓄器走漏以及是何许地点引起的透漏。图表在显示上就算很直观可是缺点和失误数字的纯正,通过示图曲线的扭转大家得以掌握浏览器上发生的风浪,最关键的是摸底内存变化的样子。而只要您愿意进一步剖析这个内部存储器状态,那么接下去你就足以展开Profiles来行事了。这将是我们以此种类的下一篇小说要介绍的。

1 赞 9 收藏 2 评论

图片 17

外接图形推断法

CSP设置upgrade-insecure-requests

幸而 W3C 职业组思考到了作者们晋级 HTTPS 的勤奋,在 2014 年 4月份就出了三个 Upgrade Insecure Requests 的草案,他的机能便是让浏览器自动晋级须求。

在大家服务器的响应头中参预:

header("Content-Security-Policy: upgrade-insecure-requests");

1
header("Content-Security-Policy: upgrade-insecure-requests");

小编们的页面是 https 的,而这一个页面中包蕴了汪洋的 http 能源(图片、iframe等),页面一旦发觉存在上述响应头,会在加载 http 财富时自动替换到 https 伏乞。能够查看 google 提供的贰个 demo:

图片 18

可是令人不解的是,这一个财富发出了三回呼吁,猜测是浏览器完毕的 bug:

图片 19

自然,借使大家不方便人民群众在服务器/Nginx 上操作,也得以在页面中投入 meta 头:

XHTML

<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests" />

1
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests" />

当前支持这些装置的还独有 chrome 43.0,然则笔者深信,CSP 将改成今后 web 前端安全努力关心和使用的从头到尾的经过。而 upgrade-insecure-requests 草案也会飞速踏向Porsche718FC 方式。

从 W3C 工作组给出的 example,能够看到,这些设置不会对别国的 a 链接做拍卖,所以能够放心使用。

1 赞 收藏 评论

让浏览器不再展现,Chrome开采者工具不完全指南。

图片 20

轴对称包围盒(Axis-Aligned Bounding Box)

概念:推断放肆多个(无旋转)矩形的随便一边是不是无距离,进而判定是或不是碰撞。

算法:

JavaScript

rect1.x < rect2.x + rect2.width && rect1.x + rect1.width > rect2.x && rect1.y < rect2.y + rect2.height && rect1.height + rect1.y > rect2.y

1
2
3
4
rect1.x < rect2.x + rect2.width &&
rect1.x + rect1.width > rect2.x &&
rect1.y < rect2.y + rect2.height &&
rect1.height + rect1.y > rect2.y

两矩形间碰撞的各个景况:
图片 21

在线运转示例(先点击运营示例以获得关节,下同):

缺点:

  • 绝对局限:两物体必需是矩形,且均不容许旋转(即有关水平和垂直方向上博采有益的意见)。
  • 对此包蕴着图案(非填满全数矩形)的矩形实行碰撞检验,可能存在精度不足的标题。
  • 实体运动速度过快时,可能会在周边两动画帧之间异常的快穿过,导致忽视了本应碰撞的事件发生。

适用案例:

  • (类)矩形物体间的磕碰。

圆形碰撞(Circle Collision)

概念:通过决断放肆五个圆圈的圆心距离是或不是低于两圆半径之和,若小于则为冲击。

两点之间的偏离由以下公式可得:
图片 22

认清两圆心距离是或不是低于两半径之和:

JavaScript

Math.sqrt(Math.pow(circleA.x - circleB.x, 2) + Math.pow(circleA.y - circleB.y, 2)) < circleA.radius + circleB.radius

1
2
3
Math.sqrt(Math.pow(circleA.x - circleB.x, 2) +
Math.pow(circleA.y - circleB.y, 2))
< circleA.radius + circleB.radius

图例:
图片 23

在线运转示例:

缺点:

  • 与『轴对称包围盒』类似

适用案例:

  • (类)圆形的实体,如各个球类碰撞。

编辑:云顶娱乐 本文来源:让浏览器不再展现,Chrome开采者工具不完全指南

关键词: