浏览器引擎

[Javascript]客户端检测

纵然是瞬间 提交于 2019-11-29 20:05:23
客户端检测是一种行之有效的开发策略。但不到万不得已,就不要使用客户端检测。先设计通用的方案,然后根据浏览器之间的差异和各自的怪癖quirky,再使用特定于浏览器的技术增强该方案。 能力检测 Feature Detection 能力检测(又称特性检测)目标是识别浏览器的能力而不是识别特定的浏览器。只需根据浏览器支持的功能给出解决方案。 能力检测作为确定下一步解决方案的依据,而不是用它来判断用户使用的是什么浏览器。 基本模式: if( object.propertyInQuestion){ //使用 object.propertyInQuestion } 两个重要的概念: 第一个概念是先检测达成目的的最常用的特性。先检测最常用的特性,可以保证代码最优化,因为在多数情况下都可以避免测试多个条件。 第二个概念是必须测试实际要用到的特性。一个特性存在,不一定意味着另一个特性也存在。 更可靠的能力检测 确定一个对象是否支持排序,检测对象是否支持sort()方法。 //只检测了是否存在相应的方法 function isSortable(object){ return !!object.sort; } var result= isSortable({sort:true}); 检测某个属性是否存在并不能确定对象是否支持排序。,检测sort是不是一个函数。 function isSortable

[Javascript]客户端检测

北战南征 提交于 2019-11-29 20:04:07
本文地址: http://www.cnblogs.com/egger/archive/2013/04/26/3045285.html 客户端检测是一种行之有效的开发策略。但 不到万不得已,就不要使用客户端检测。 先设计通用的方案,然后根据浏览器之间的差异和各自的怪癖quirky,再使用特定于浏览器的技术增强该方案。 能力检测 Feature Detection 能力检测(又称特性检测)目标是 识别浏览器的能力而不是识别特定的浏览器。只需根据浏览器支持的功能给出解决方案。 能力检测作为确定下一步解决方案的依据,而不是用它来判断用户使用的是什么浏览器。 基本模式: if( object.propertyInQuestion){ //使用 object.propertyInQuestion } 两个重要的概念: 第一个概念是先检测达成目的的最常用的特性。先检测最常用的特性,可以保证代码最优化,因为在多数情况下都可以避免测试多个条件。 第二个概念是必须测试实际要用到的特性。一个特性存在,不一定意味着另一个特性也存在。 更可靠的能力检测 确定一个对象是否支持排序,检测对象是否支持sort()方法。 //只检测了是否存在相应的方法 function isSortable(object){ return !!object.sort; } var result= isSortable({sort

浏览器内核的解析和对比

对着背影说爱祢 提交于 2019-11-29 17:17:32
要搞清楚浏览器内核是什么,首先应该先搞清楚浏览器的 构成。简单来说浏览器可以分为两部分,shell+内核。其中shell的种类相对比较多,内核则比较少。Shell是指浏览器的外壳:例如菜单,工具栏 等。主要是提供给用户界面操作,参数设置等等。它是调用内核来实现各种功能的。内核才是浏览器的核心。内核是基于标记语言显示内容的程序或模块。也有一些 浏览器并不区分外壳和内核。从Mozilla将Gecko独立出来后,才有了外壳和内核的明确划分。目前主流的浏览器有IE6、 IE8 、Mozilla、FireFox、Opera、Safari、Chrome、Netscape等。 什么是浏览器内核 浏览器内核又可以分成两部分:渲染引擎(layout engineer或者Rendering Engine)和JS引擎。它负责取得网页的内容(HTML、XML、图像等等)、整理讯息(例如加入CSS等),以及计算网页的显示方式,然后会输出至 显示器或打印机。浏览器的内核的不同对于网页的语法解释会有不同,所以渲染的效果也不相同。所有网页浏览器、电子邮件客户端以及其它需要编辑、显示网络内 容的应用程序都需要内核。(参见维基百科)JS引擎则是解析Javascript语言,执行javascript语言来实现网页的动态效果。最开始渲染引 擎和JS引擎并没有区分的很明确,后来JS引擎越来越独立,内核就倾向于只指渲染引擎

为什么操作DOM会影响WEB应用的性能?

。_饼干妹妹 提交于 2019-11-28 11:02:12
面试官经常会问你:“平时工作中,你怎么优化自己应用的性能?” 你回答如下:“我平时遵循以下几条原则来优化我的项目、以提高性能,主要有:” a. 减少DOM操作的次数(减少DOM的获取与修改次数) b. 减少网络请求 c. 压缩、合并静态资源文件(css、js、img等) d. 小图片文件base64化处理 e. js少用全局变量 f. ... Bingo!此时,你给自己抛了个可以把自己埋住的大坑。 因为面试官可能会追问你:“为什么减少DOM操作可以提高性能?” 为什么呢? _______ 1、dom是什么?ES和 DOM是什么关系? DOM 就是 Document Object Model ,文档对象模型,里边是接口,即方法函数。我们通过调用并传指定参数来使用。 官方定义:DOM是一个独立于语言的、用于操作XML和HTML文档的程序接口(API)。在浏览器中主要用于与HTML文档打交道,并且使用DOM API用来访问文档中的数据。 DOM是个与ES语言无关的API,它在浏览器中的接口却是用JavaScript来实现的,DOM就成了现在JS编码中的重要部分。 1-1、各大浏览器中,DOM的位置和JavaScript的位置(渲染引擎与JS引擎相互独立) 浏览器 JS位置 DOM位置 IE JavaScript的实现名为JScript,位于jscript.dll文件中

常用开浏览器内核

ε祈祈猫儿з 提交于 2019-11-28 00:21:46
  浏览器内核又可以分成两部分:渲染引擎(layout engineer 或者 Rendering Engine)和 JS 引擎。   渲染引擎 它负责取得网页的内容(HTML、XML、图像等等)、整理讯息(例如加入 CSS 等),以及计算网页的显示方式,然后会输出至显示器或打印机。浏览器的内核的不同对于网页的语法解释会有不同,所以渲染的效果也不相同。   JS 引擎 则是解析 Javascript 语言,执行 javascript语言来实现网页的动态效果。   最开始渲染引擎和 JS 引擎并没有区分的很明确,后来 JS 引擎越来越独立,内核就倾向于只指渲染引擎。有一个网页标准计划小组制作了一个 ACID 来测试引擎的兼容性和性能。内核的种类很多,如加上没什么人使用的非商业的免费内核,可能会有10多种,但是常见的浏览器内核可以分这四种:Trident、Gecko、Blink、Webkit。   (1)Trident(IE内核)   国内很多的双核浏览器的其中一核便是 Trident,美其名曰 "兼容模式"。   代表: IE、傲游、世界之窗浏览器、Avant、腾讯TT、猎豹安全浏览器、360极速浏览器、百度浏览器等。   Window10 发布后,IE 将其内置浏览器命名为 Edge,Edge 最显著的特点就是新内核 EdgeHTML。   (2)Gecko(firefox)

主流浏览器、主流浏览器内核及Google脚本渲染V8简介

佐手、 提交于 2019-11-27 16:57:53
1.浏览器内核的定义 浏览器内核又 称为“渲染引擎”, 负责对网页语法(HTML,JavaScript)的解释并渲染网页,决定了浏览器将以什么样的方式显示浏览器的内容以及格式信息。不同的浏览器对网页语法的显示结果有所区别,这也就是网页编写人员要在不同的浏览器上进行网页测试的原因。 2.浏览器内核分类 ①Trident 该内核程序在1997年的IE4中首次被采用,是微软在Mosaic代码的基础之上修改而来的,并沿用到IE11,也被普遍称作”IE内核”。其实际上是一款开放的内核,但是由于与window长期捆绑占据了大量的市场份额,使得IE本身具有了“垄断性”。同时,由于微软长期不对IE内核进行更新使得其本身具有很多的bug和安全性问题。因此,一些致力于开源的开发人员和学者便将目光转向了其他的浏览器,firfox和Opera就是这个时候兴起的。随后,微软进行了及时的更新, IE从版本11开始,初步支持WebGL技术。IE8的JavaScript引擎是Jscript,IE9开始用Chakra,这两个版本区别很大,Chakra无论是速度和标准化方面都很出色。 【代表浏览器】 IE,360安全(急速),猎豹安全(极轻),遨游,百度浏览器(早期版本),2345,搜狗,115,UC等。注意,国内一般将其他内核成为高速浏览器,而Trident则是兼容浏览器,用户可以来回的切换。 ②Gecko

常见的五大浏览器的内核

谁说胖子不能爱 提交于 2019-11-27 15:45:59
首先我们理解一下什么是内核: 英文叫做:Rendering Engine,中文翻译很多,排版引擎、解释引擎、渲染引擎,现在流行称为浏览器内核. Rendering Engine,顾名思义,就是用来渲染网页内容的,将开发者写的代码转换为用户可以看见的完美页面。由于牵扯到排版问题,所以肯定会排版错位等问题。为什么会排版错位呢?有的是由于网站本身编写不规范,有的是由于浏览器本身的渲染不标准。现在有几个主流的排版引擎,因为这些排版引擎都有其代表的浏览器,所以常常会把排版引擎的名称和浏览器的名称混用,比如常的说IE内核、Chrome内核。其实这样子是不太合理的,因为一个完整的浏览器不会只有一的排版引擎,还有自己的界面框架和其它的功能相辅相成的,而排版引擎本身也不可能实现浏览器的所有功能。 下面罗列一下几款主流的排版引擎和浏览器。 总之浏览器内核就是负责读取网页内容,整理讯息,计算网页的显示方式并显示页面. 因为浏览器太多啦, 但是现在主要流行的就是下面几个: 浏览器 内核 备注 IE     Trident IE、猎豹安全、360极速浏览器、百度浏览器 firefox   Gecko   可惜这几年已经没落了,打开速度慢、升级频繁、猪一样的队友flash、神一样的对手chrome。 Safari    webkit   从Safari推出之时起,它的渲染引擎就是Webkit,一提到

JS 各种引擎介绍

僤鯓⒐⒋嵵緔 提交于 2019-11-27 10:06:06
JS 各种引擎介绍 http://www.oschina.net/project/tag/296/javascript-engine 不同浏览器有不同的 JS 引擎: WebKit , Safari 浏览器 ->SquirrelFish Extreme , Firefox à TraceMonkey 引擎 Google Chrome à V8 引擎,( C++ ) Opera -> Carakan Mozilla ->SpiderMonkey(C 语言 ) Mozilla à Rhino( Java) Mozilla ->JaegerMonkey SEE (Simple ECMAScript Engine) C语言开发的轻量级的 ECMAScript (JavaScript) 解析器和实时运行环境 (1)javascript 解析引擎 V8 (C++ ) http://www.oschina.net/p/v8 V8 是 Google 发布的开源 JavaScript 引擎,采用 C++ 编写,在 Google 的 Chrome 浏览器中被使用。V8 引擎可以独立运行,也可以用来 嵌入 到 C++ 应用程序中执行。\ (2)javascript 脚本引擎 SpiderMonkey (c 语言 ) http://www.oschina.net/p/spidermonkey

从输入URL到页面加载发生了什么?

醉酒当歌 提交于 2019-11-27 01:55:32
  恩,如你所见,这是一道程序员经典面试题,涵盖了各个领域的知识,这个问题可以答的很简单,也可以答的很复杂。   首先,我们会在浏览器中输入类似 http(s)://xxx.xxx.com 这样的域名。   我们看到这个域名由 http 或 https 协议组成。   那么既然我们说到了协议,不得不先来了解一下计算机网络的知识了。      一台电脑要和另一台电脑通信,本质上就是通过电信号的高低频,在计算机中也就是0和1来传输,那么最底层一定是物理层,我们用的光纤,网线都是物理层的媒介和连接器,物理层也有很多协议和标准,这里就不展开了。往上一层包装的就是数据链路层,我们平时所说的ARP地址解析协议就在这一层,它是根据ip地址解析到电脑mac地址(硬件物理地址)的协议。再往上包装的就是网络层,著名的ip协议就在这一层,是用来寻址的重要协议。然后是传输层,寻址到了我们需要搭建一个传输的桥梁,著名的TCP三次握手就在这一层。通道已经建好了,那么把数据包用HTTP协议的格式封装好,准备传输,这一层就是应用层,还包括了常见的DNS域名解析系统,SMTP简单邮件传输协议等。   这样经过一层一层的包装和拆包,计算机和计算机之间才可以建立联系,互相发送彼此能看懂的数据包。   所以,在浏览器中输入URL后,第一步是通过应用层的DNS解析这个域名对应的真实ip地址

客户端检测

血红的双手。 提交于 2019-11-26 18:57:46
检测 Web 客户端的手段很多,而且各有利弊,但最重要的是,不到万不得已,就不要使用客户端检测。 只要能够找到更通用的方法,就应该优先采用更通用的方法。 一言而蔽之,先设计最通用的方案,然后再使用特定于浏览器的技术增强该方案。 一、能力检测 最常用也最为人们广泛接受的客户端检测形式是能力检测(又称特性检测)。能力检测的目标不是识别特定的浏览器,而是识别浏览器的能力。采用这种方式不必顾忌特定的浏览器如何,只要确定浏览器支持特定的能力,就可以给出解决方案。 能力检测的基本模式如下: if( object.propertyInQuestion){ //使用 object.propertyInQuestion } 两个重要的概念: 第一个概念是先检测达成目的的最常用的特性。先检测最常用的特性,可以保证代码最优化,因为在多数情况下都可以避免测试多个条件。 第二个概念是必须测试实际要用到的特性。一个特性存在,不一定意味着另一个特性也存在。 检测某个或某几个特性并不能够确定浏览器。实际上,根据浏览器不同将能力组合起来是更可取的方式。 如果知道自己的应用程序需要使用某些特定的浏览器特性,那么最好是一次性检测所有相关特性,而不要分别检测。 //确定浏览器是否支持 Netscape 风格的插件 var hasNSPlugins = !!(navigator.plugins && navigator