SlideShare a Scribd company logo
1 of 63
Download to read offline
Browser Object Model




                2011-04-15
• 拔赤
 淘宝前端开发工程师
 http://jayli.github.com
Programming
 Languages
2003-2010 最受欢迎语言
What about JavaScript ?
JavaScript是世界上   Douglas Crockford
  最被误解的语言
JS丰富的表达能力让
人以为它是为外行设    Douglas Crockford
计的,而不是专业程序
 员,这显然不是事实
Google Code中语言出现
               fuck一词的比率
                                                                    0.56%




        0.29%
                0.26%
0.24%

                                                    0.15%
                        0.13% 0.13% 0.12%
                                                            0.10%
                                            0.04%                           0.05%
• ECMAScript
 EMCA指定的标准化语言,JavaScript,ActionScript…
 http://www.ecmascript.org/
ECMAScript 的实现
Browsers’ history
    1991 ~ present
Lynx




ViolaWWW
高调的
NetScape




           我来打酱油
NetScape 3.6




IE 1.0
NetScape遭
         到致命打击




微软免费捆绑
  销售IE
Opera 3.6
划时代意义的
               IE6诞生



                 继续打酱油,囧




NetScape的重生
IE 6


Safari 3
划时代意义的
Firefox诞生
Firefox 1.0
拜拜了
               NetScape




从IE7到IE8并
无本质的飞跃


            Chrome火爆发布
             惊艳的v8引擎
向HTML5跃进
DOM & BOM
We should know:

  • DOM、BOM
  • Ajax
  • Event
  • YUI3
Javascript



ECMAScript     DOM        BOM




  浏览器JavaScript的组成
• DOM
 W3C标准提供的文档模型,浏览器均实现了这个标准
• BOM
 浏览器对象模型,浏览器各自的实现
BOM
•   Document对象 - DOM根节点
•   Frames数组 – 历史记录
•   History对象 – 窗口浏览历史
•   Location对象 – 地址栏相关
•   Navigator对象 – 浏览器版本信息
浏览器提供的全局方法

        方法名               说明
alert/confirm/prompt      弹框
 set(clear)Timeout     设置(清除)延时执行
 set(clear)Interval    设置(清除)循环执行
    close/open          关闭/打开窗口
     scroll(To)           窗口滚动
  move(resize)To       窗口移动到(改变为)
        eval             执行js代码
     blur/focus         失去/得到焦点
帧(window)相关的变量

方法名                 说明
parent       如果当前窗口为frame,指向
             包含该frame的窗口的frame
 self         指向当前的window对象
 top         如果当前窗口为frame,指向
             包含该frame的top-level的
                 window对象
window        指向当前的window对象
DOM

HTML 文档对象模型(HTML Document
Object Model)定义了访问和处理 HTML
文档的标准方法。




注意:渲染过程中的Javascript操作
Building DOM…
浏览器渲染过程
执行脚本过程中的渲染
<!DOCTYPE HTML>
<html lang="zh">
  <head>head</head>
<body>
<script>                    error
  //error
  alert(document.getElementById('a'));
</script>
<span id="a“>error</span>
</body>
</html>
<!DOCTYPE HTML>
<html lang="zh">
  <head>head</head>
<body>
<span id="a">ok</span>
<script>                     ok
  //ok
  alert(document.getElementById('a'));
</script>
</body>
</html>
三个重要的事件
<!DOCTYPE HTML>
<html lang="zh">
  <head>head</head>
<body>
  <div id=“J”>
     <span id="a">ok</span>
     <span id=“b">ok</span>
  </div>
</body>
</html>
<!DOCTYPE HTML>          document

<html lang="zh">
  <head>head</head>                 head

<body>
  <div id=“J”>
     <span id="a">ok</span>
     <span id="a">ok</span>
  </div>
</body>
</html>
<!DOCTYPE HTML>          document

<html lang="zh">
  <head>head</head>                 head

<body>                              body
  <div id=“J”>
     <span id="a">ok</span>
     <span id=“b">ok</span>
  </div>
</body>
</html>
<!DOCTYPE HTML>          document

<html lang="zh">
  <head>head</head>               head

<body>                            body
  <div id=“J”>
     <span id="a">ok</span>              div#J

     <span id=“b">ok</span>
  </div>
                   div#J available
</body>
</html>
<!DOCTYPE HTML>       document

<html lang="zh">
  <head>head</head>            head

<body>                         body
  <div id=“J”>
     <span id="a">ok</span>         div#J

     <span id=“b">ok</span>
                                            span#a
  </div>
</body>
</html>              span#a available
<!DOCTYPE HTML>        document

<html lang="zh">
  <head>head</head>             head

<body>                          body
  <div id=“J”>
     <span id="a">ok</span>          div#J

     <span id=“b">ok</span>
                                             span#a
  </div>       div#J contentready
</body>                                      span#b

</html>
                     span#b available
<!DOCTYPE HTML>       document

<html lang="zh">
  <head>head</head>              head

<body>                           body
  <div id=“J”>
     <span id="a">ok</span>             div#J

     <span id=“b">ok</span>
                                                span#a
  </div>
</body>                                         span#b

</html>
             domready
<!DOCTYPE HTML>
<html lang="zh">
  <head>head</head>
<body>                       ok
<script>
  Y.on(‘available’,function(){
     alert(Y.one(‘#a’));
  },’#a’);
</script>
<span id="a">ok</span>
</body>
</html>
JSON
AJAX
Ajax(Asynchronous JavaScript And Xml)

  • Post
  • Get
  • Xdr
  • Jsonp
推荐:返回unicode转码后的数据
广义的 Ajax


异步加载数据     用户体验的提升




异步加载文档内容    页面性能的提升
更广义的 Ajax




短链接的限制,单向!?
Events


JavaScript是一种事件
驱动的编程语言



Y.on(‘domready’,function(){
   //your code here…
});
绑定回调,等待事件发生
事件冒泡
事件委托
<div id="container">
   <ul>
        <li id="item-1"><em>1</em></li>
        <li id="item-2"><em>2</em></li>
   </ul>
</div>

Y.delegate(‘click’,function(e){
    //当事件冒泡至li处,触发回调
},’#continer’,’li’);
库提供了更多自定义事件

Y.on(‘mouseenter’,function(e){
    //鼠标移入
},’#continer’);

Y.on(‘mouseleave’,function(e){
    //鼠标移出
},’#continer’);


    http://developer.yahoo.com/yui/3/event/
http://developer.yahoo.com/yui/3/
ref

• http://www.w3.org/DOM/
• http://www.yuiblog.com/blog/2009/04/27/vi
  deo-ppk-jsevents/
• http://www.slideshare.net/lijing00333/yui3-
  7203908
Browser Object Model

More Related Content

What's hot

网页制作基础
网页制作基础网页制作基础
网页制作基础loo2k
 
Css性能优化
Css性能优化Css性能优化
Css性能优化linxz
 
Backbone.js and MVW 101
Backbone.js and MVW 101Backbone.js and MVW 101
Backbone.js and MVW 101Jollen Chen
 
Joomla Programming Basic concepts
Joomla Programming Basic conceptsJoomla Programming Basic concepts
Joomla Programming Basic conceptsAlan Submarine
 
CSS 培训
CSS 培训CSS 培训
CSS 培训S S
 
reflow & repaint
reflow & repaintreflow & repaint
reflow & repaintRandy Jin
 
Peggy 重新認識java script
Peggy 重新認識java scriptPeggy 重新認識java script
Peggy 重新認識java scriptLearningTech
 
Inside the-browser
Inside the-browserInside the-browser
Inside the-browserjy03845581
 
OpenWebSchool - 01 - WWW Intro
OpenWebSchool - 01 - WWW IntroOpenWebSchool - 01 - WWW Intro
OpenWebSchool - 01 - WWW IntroHung-yu Lin
 
網頁三本柱之Html與css
網頁三本柱之Html與css網頁三本柱之Html與css
網頁三本柱之Html與cssAaron King
 
不一樣的 Web Server coServ Part II
不一樣的 Web Server coServ Part II不一樣的 Web Server coServ Part II
不一樣的 Web Server coServ Part IIBen Lue
 
Kind editor设计思路
Kind editor设计思路Kind editor设计思路
Kind editor设计思路taobao.com
 

What's hot (13)

网页制作基础
网页制作基础网页制作基础
网页制作基础
 
Css性能优化
Css性能优化Css性能优化
Css性能优化
 
Web教程2
Web教程2Web教程2
Web教程2
 
Backbone.js and MVW 101
Backbone.js and MVW 101Backbone.js and MVW 101
Backbone.js and MVW 101
 
Joomla Programming Basic concepts
Joomla Programming Basic conceptsJoomla Programming Basic concepts
Joomla Programming Basic concepts
 
CSS 培训
CSS 培训CSS 培训
CSS 培训
 
reflow & repaint
reflow & repaintreflow & repaint
reflow & repaint
 
Peggy 重新認識java script
Peggy 重新認識java scriptPeggy 重新認識java script
Peggy 重新認識java script
 
Inside the-browser
Inside the-browserInside the-browser
Inside the-browser
 
OpenWebSchool - 01 - WWW Intro
OpenWebSchool - 01 - WWW IntroOpenWebSchool - 01 - WWW Intro
OpenWebSchool - 01 - WWW Intro
 
網頁三本柱之Html與css
網頁三本柱之Html與css網頁三本柱之Html與css
網頁三本柱之Html與css
 
不一樣的 Web Server coServ Part II
不一樣的 Web Server coServ Part II不一樣的 Web Server coServ Part II
不一樣的 Web Server coServ Part II
 
Kind editor设计思路
Kind editor设计思路Kind editor设计思路
Kind editor设计思路
 

Similar to Browser Object Model

深入剖析浏览器
深入剖析浏览器深入剖析浏览器
深入剖析浏览器jay li
 
浅析浏览器解析和渲染
浅析浏览器解析和渲染浅析浏览器解析和渲染
浅析浏览器解析和渲染Ailsa126
 
Html5和css3入门
Html5和css3入门Html5和css3入门
Html5和css3入门Xiujun Ma
 
JavaScript Engine
JavaScript EngineJavaScript Engine
JavaScript Enginejay li
 
HTML5概览
HTML5概览HTML5概览
HTML5概览Adam Lu
 
Web设计 5 “动感新势力”(css3 html5 以及 web_gl)
Web设计 5 “动感新势力”(css3 html5 以及 web_gl)Web设计 5 “动感新势力”(css3 html5 以及 web_gl)
Web设计 5 “动感新势力”(css3 html5 以及 web_gl)ziggear
 
基于Greasemonkey的Firefox浏览器扩展
基于Greasemonkey的Firefox浏览器扩展基于Greasemonkey的Firefox浏览器扩展
基于Greasemonkey的Firefox浏览器扩展agen
 
基于Greasemonkey的Firefox浏览器扩展
基于Greasemonkey的Firefox浏览器扩展基于Greasemonkey的Firefox浏览器扩展
基于Greasemonkey的Firefox浏览器扩展agen
 
第三方内容开发最佳实践
第三方内容开发最佳实践第三方内容开发最佳实践
第三方内容开发最佳实践taobao.com
 
Class 20170126
Class 20170126Class 20170126
Class 20170126Ivan Wei
 
模块加载策略 - 2012 SDCC, 北京
模块加载策略 - 2012 SDCC, 北京模块加载策略 - 2012 SDCC, 北京
模块加载策略 - 2012 SDCC, 北京Joseph Chiang
 
Exam 98-375 HTML5 Application Development Fundamentals
Exam 98-375 HTML5 Application Development FundamentalsExam 98-375 HTML5 Application Development Fundamentals
Exam 98-375 HTML5 Application Development FundamentalsChieh Lin
 
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練3
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練32016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練3
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練3Duran Hsieh
 
解读html
解读html解读html
解读htmlcssrain
 
Qq.com前端架构实践与思考
Qq.com前端架构实践与思考Qq.com前端架构实践与思考
Qq.com前端架构实践与思考greengnn
 
一拍一产品背后的故事(React实战)
一拍一产品背后的故事(React实战)一拍一产品背后的故事(React实战)
一拍一产品背后的故事(React实战)Kejun Zhang
 
台科大暑期資工營 - 前端入門
台科大暑期資工營 - 前端入門台科大暑期資工營 - 前端入門
台科大暑期資工營 - 前端入門Yi-Feng Xie
 
2011 JavaTwo JSF 2.0
2011 JavaTwo JSF 2.02011 JavaTwo JSF 2.0
2011 JavaTwo JSF 2.0Anthony Chen
 
给聚划算后端开发的前端培训
给聚划算后端开发的前端培训给聚划算后端开发的前端培训
给聚划算后端开发的前端培训j5726
 

Similar to Browser Object Model (20)

深入剖析浏览器
深入剖析浏览器深入剖析浏览器
深入剖析浏览器
 
浅析浏览器解析和渲染
浅析浏览器解析和渲染浅析浏览器解析和渲染
浅析浏览器解析和渲染
 
Html5和css3入门
Html5和css3入门Html5和css3入门
Html5和css3入门
 
JavaScript Engine
JavaScript EngineJavaScript Engine
JavaScript Engine
 
HTML5概览
HTML5概览HTML5概览
HTML5概览
 
Web设计 5 “动感新势力”(css3 html5 以及 web_gl)
Web设计 5 “动感新势力”(css3 html5 以及 web_gl)Web设计 5 “动感新势力”(css3 html5 以及 web_gl)
Web设计 5 “动感新势力”(css3 html5 以及 web_gl)
 
基于Greasemonkey的Firefox浏览器扩展
基于Greasemonkey的Firefox浏览器扩展基于Greasemonkey的Firefox浏览器扩展
基于Greasemonkey的Firefox浏览器扩展
 
Js dom
Js domJs dom
Js dom
 
基于Greasemonkey的Firefox浏览器扩展
基于Greasemonkey的Firefox浏览器扩展基于Greasemonkey的Firefox浏览器扩展
基于Greasemonkey的Firefox浏览器扩展
 
第三方内容开发最佳实践
第三方内容开发最佳实践第三方内容开发最佳实践
第三方内容开发最佳实践
 
Class 20170126
Class 20170126Class 20170126
Class 20170126
 
模块加载策略 - 2012 SDCC, 北京
模块加载策略 - 2012 SDCC, 北京模块加载策略 - 2012 SDCC, 北京
模块加载策略 - 2012 SDCC, 北京
 
Exam 98-375 HTML5 Application Development Fundamentals
Exam 98-375 HTML5 Application Development FundamentalsExam 98-375 HTML5 Application Development Fundamentals
Exam 98-375 HTML5 Application Development Fundamentals
 
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練3
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練32016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練3
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練3
 
解读html
解读html解读html
解读html
 
Qq.com前端架构实践与思考
Qq.com前端架构实践与思考Qq.com前端架构实践与思考
Qq.com前端架构实践与思考
 
一拍一产品背后的故事(React实战)
一拍一产品背后的故事(React实战)一拍一产品背后的故事(React实战)
一拍一产品背后的故事(React实战)
 
台科大暑期資工營 - 前端入門
台科大暑期資工營 - 前端入門台科大暑期資工營 - 前端入門
台科大暑期資工營 - 前端入門
 
2011 JavaTwo JSF 2.0
2011 JavaTwo JSF 2.02011 JavaTwo JSF 2.0
2011 JavaTwo JSF 2.0
 
给聚划算后端开发的前端培训
给聚划算后端开发的前端培训给聚划算后端开发的前端培训
给聚划算后端开发的前端培训
 

More from jay li

犀牛书第六版
犀牛书第六版犀牛书第六版
犀牛书第六版jay li
 
淘宝移动端Web开发最佳实践
淘宝移动端Web开发最佳实践淘宝移动端Web开发最佳实践
淘宝移动端Web开发最佳实践jay li
 
Jswebapps
JswebappsJswebapps
Jswebappsjay li
 
潜力无限的编程语言Javascript
潜力无限的编程语言Javascript潜力无限的编程语言Javascript
潜力无限的编程语言Javascriptjay li
 
Responsive Web UI Design
Responsive Web UI DesignResponsive Web UI Design
Responsive Web UI Designjay li
 
HTML/CSS/JS基础
HTML/CSS/JS基础HTML/CSS/JS基础
HTML/CSS/JS基础jay li
 
淘宝前端技术巡礼
淘宝前端技术巡礼淘宝前端技术巡礼
淘宝前端技术巡礼jay li
 
F2e security
F2e securityF2e security
F2e securityjay li
 
中国元素在设计中的应用 -如瑟
中国元素在设计中的应用 -如瑟中国元素在设计中的应用 -如瑟
中国元素在设计中的应用 -如瑟jay li
 
卫银霞 -统计数字会撒谎
卫银霞 -统计数字会撒谎卫银霞 -统计数字会撒谎
卫银霞 -统计数字会撒谎jay li
 
编码大全 拔赤
编码大全 拔赤编码大全 拔赤
编码大全 拔赤jay li
 
小控件、大学问
小控件、大学问小控件、大学问
小控件、大学问jay li
 
Mobile UI design and Developer
Mobile UI design and DeveloperMobile UI design and Developer
Mobile UI design and Developerjay li
 
Javascript autoload
Javascript autoloadJavascript autoload
Javascript autoloadjay li
 
Html5form
Html5formHtml5form
Html5formjay li
 
Js doc toolkit
Js doc toolkitJs doc toolkit
Js doc toolkitjay li
 
新业务新员工培训 Banner设计
新业务新员工培训   Banner设计新业务新员工培训   Banner设计
新业务新员工培训 Banner设计jay li
 
夏之 专题设计
夏之 专题设计夏之 专题设计
夏之 专题设计jay li
 
赤骥 用户研究入门
赤骥 用户研究入门赤骥 用户研究入门
赤骥 用户研究入门jay li
 

More from jay li (20)

犀牛书第六版
犀牛书第六版犀牛书第六版
犀牛书第六版
 
淘宝移动端Web开发最佳实践
淘宝移动端Web开发最佳实践淘宝移动端Web开发最佳实践
淘宝移动端Web开发最佳实践
 
Jswebapps
JswebappsJswebapps
Jswebapps
 
潜力无限的编程语言Javascript
潜力无限的编程语言Javascript潜力无限的编程语言Javascript
潜力无限的编程语言Javascript
 
Responsive Web UI Design
Responsive Web UI DesignResponsive Web UI Design
Responsive Web UI Design
 
HTML/CSS/JS基础
HTML/CSS/JS基础HTML/CSS/JS基础
HTML/CSS/JS基础
 
淘宝前端技术巡礼
淘宝前端技术巡礼淘宝前端技术巡礼
淘宝前端技术巡礼
 
F2e security
F2e securityF2e security
F2e security
 
中国元素在设计中的应用 -如瑟
中国元素在设计中的应用 -如瑟中国元素在设计中的应用 -如瑟
中国元素在设计中的应用 -如瑟
 
卫银霞 -统计数字会撒谎
卫银霞 -统计数字会撒谎卫银霞 -统计数字会撒谎
卫银霞 -统计数字会撒谎
 
编码大全 拔赤
编码大全 拔赤编码大全 拔赤
编码大全 拔赤
 
小控件、大学问
小控件、大学问小控件、大学问
小控件、大学问
 
Mobile UI design and Developer
Mobile UI design and DeveloperMobile UI design and Developer
Mobile UI design and Developer
 
Javascript autoload
Javascript autoloadJavascript autoload
Javascript autoload
 
Html5form
Html5formHtml5form
Html5form
 
Slide
SlideSlide
Slide
 
Js doc toolkit
Js doc toolkitJs doc toolkit
Js doc toolkit
 
新业务新员工培训 Banner设计
新业务新员工培训   Banner设计新业务新员工培训   Banner设计
新业务新员工培训 Banner设计
 
夏之 专题设计
夏之 专题设计夏之 专题设计
夏之 专题设计
 
赤骥 用户研究入门
赤骥 用户研究入门赤骥 用户研究入门
赤骥 用户研究入门
 

Browser Object Model