SlideShare a Scribd company logo
Browser Object Model




                2011-04-15
• 拔赤
 淘宝前端开发工程师
 http://jayli.github.com
Programming
 Languages
Browser Object Model
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跃进
Browser Object Model
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
Browser Object Model
Browser Object Model
Browser Object Model
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

PPT
J Query简介及入门指南
PPT
Web设计 3 java_script初探(程序员与设计师的双重眼光)
PDF
网页制作基础
PDF
Html&css基础
PDF
Django step0
PDF
Android vs e pub
PDF
AJAX Basic
PDF
輕鬆學會網頁前端
J Query简介及入门指南
Web设计 3 java_script初探(程序员与设计师的双重眼光)
网页制作基础
Html&css基础
Django step0
Android vs e pub
AJAX Basic
輕鬆學會網頁前端

What's hot (13)

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

Similar to Browser Object Model (20)

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

More from jay li (20)

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

Browser Object Model