browser object model

63
Browser Object Model 2011-04-15

Upload: jay-li

Post on 28-Jan-2015

119 views

Category:

Documents


0 download

DESCRIPTION

DOM,BOM,Ajax,Event,JSON

TRANSCRIPT

Page 1: Browser Object Model

Browser Object Model

2011-04-15

Page 2: Browser Object Model

• 拔赤淘宝前端开发工程师

http://jayli.github.com

Page 3: Browser Object Model

Programming Languages

Page 4: Browser Object Model
Page 5: Browser Object Model

2003-2010 最受欢迎语言

Page 6: Browser Object Model

What about JavaScript ?

Page 7: Browser Object Model

JavaScript是世界上最被误解的语言

Douglas Crockford

Page 8: Browser Object Model

JS丰富的表达能力让人以为它是为外行设计的,而不是专业程序

员,这显然不是事实

Douglas Crockford

Page 9: Browser Object Model

0.24%0.29%

0.26%

0.13% 0.13% 0.12%

0.04%

0.15%0.10%

0.56%

0.05%

Google Code中语言出现

fuck一词的比率

Page 10: Browser Object Model

• ECMAScriptEMCA指定的标准化语言,JavaScript,ActionScript…http://www.ecmascript.org/

Page 11: Browser Object Model

ECMAScript 的实现

Page 12: Browser Object Model

Browsers’ history1991 ~ present

Page 13: Browser Object Model

ViolaWWW

Lynx

Page 14: Browser Object Model

高调的NetScape

我来打酱油

Page 15: Browser Object Model

NetScape 3.6

IE 1.0

Page 16: Browser Object Model

微软免费捆绑销售IE

NetScape遭到致命打击

Page 17: Browser Object Model

Opera 3.6

Page 18: Browser Object Model

划时代意义的IE6诞生

NetScape的重生

继续打酱油,囧

Page 19: Browser Object Model

Safari 3

IE 6

Page 20: Browser Object Model

划时代意义的Firefox诞生

Page 21: Browser Object Model

Firefox 1.0

Page 22: Browser Object Model

从IE7到IE8并无本质的飞跃

拜拜了NetScape

Chrome火爆发布惊艳的v8引擎

Page 23: Browser Object Model

向HTML5跃进

Page 24: Browser Object Model
Page 25: Browser Object Model

DOM & BOM

Page 26: Browser Object Model

• DOM、BOM• Ajax• Event• YUI3

We should know:

Page 27: Browser Object Model

Javascript

ECMAScript DOM BOM

浏览器JavaScript的组成

Page 28: Browser Object Model

• DOMW3C标准提供的文档模型,浏览器均实现了这个标准

• BOM浏览器对象模型,浏览器各自的实现

Page 29: Browser Object Model

• Document对象 - DOM根节点

• Frames数组 – 历史记录

• History对象 – 窗口浏览历史

• Location对象 – 地址栏相关

• Navigator对象 – 浏览器版本信息

BOM

Page 30: Browser Object Model

方法名 说明

alert/confirm/prompt 弹框

set(clear)Timeout 设置(清除)延时执行

set(clear)Interval 设置(清除)循环执行

close/open 关闭/打开窗口

scroll(To) 窗口滚动

move(resize)To 窗口移动到(改变为)

eval 执行js代码

blur/focus 失去/得到焦点

浏览器提供的全局方法

Page 31: Browser Object Model

方法名 说明

parent 如果当前窗口为frame,指向包含该frame的窗口的frame

self 指向当前的window对象

top 如果当前窗口为frame,指向包含该frame的top-level的

window对象

window 指向当前的window对象

帧(window)相关的变量

Page 32: Browser Object Model

DOM

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

注意:渲染过程中的Javascript操作

Page 33: Browser Object Model

Building DOM…

Page 34: Browser Object Model

浏览器渲染过程

Page 35: Browser Object Model

执行脚本过程中的渲染

Page 36: Browser Object Model

<!DOCTYPE HTML><html lang="zh"><head>head</head>

<body><script>//erroralert(document.getElementById('a'));

</script><span id="a“>error</span></body></html>

error

Page 37: Browser Object Model

<!DOCTYPE HTML><html lang="zh"><head>head</head>

<body><span id="a">ok</span><script>//okalert(document.getElementById('a'));

</script></body></html>

ok

Page 38: Browser Object Model

三个重要的事件

Page 39: Browser Object Model

<!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>

Page 40: Browser Object Model

<!DOCTYPE HTML><html lang="zh"><head>head</head>

<body><div id=“J”>

<span id="a">ok</span><span id="a">ok</span>

</div></body></html>

document

head

Page 41: Browser Object Model

<!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>

document

head

body

Page 42: Browser Object Model

<!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>

document

head

body

div#J

div#J available

Page 43: Browser Object Model

<!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>

document

head

body

div#J

span#a

span#a available

Page 44: Browser Object Model

<!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>

document

head

body

div#J

span#a

span#b

span#b available

div#J contentready

Page 45: Browser Object Model

<!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>

document

head

body

div#J

span#a

span#b

domready

Page 46: Browser Object Model

<!DOCTYPE HTML><html lang="zh"><head>head</head>

<body><script>Y.on(‘available’,function(){

alert(Y.one(‘#a’));},’#a’);

</script><span id="a">ok</span></body></html>

ok

Page 47: Browser Object Model

JSON

Page 48: Browser Object Model
Page 49: Browser Object Model
Page 50: Browser Object Model
Page 51: Browser Object Model

AJAX

Page 52: Browser Object Model

Ajax(Asynchronous JavaScript And Xml)

• Post• Get• Xdr• Jsonp

Page 53: Browser Object Model

推荐:返回unicode转码后的数据

Page 54: Browser Object Model

异步加载数据

异步加载文档内容

用户体验的提升

页面性能的提升

广义的 Ajax

Page 55: Browser Object Model

更广义的 Ajax

短链接的限制,单向!?

Page 56: Browser Object Model

Events

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

Y.on(‘domready’,function(){//your code here…

});

Page 57: Browser Object Model

绑定回调,等待事件发生

Page 58: Browser Object Model

事件冒泡

Page 59: Browser Object Model

Y.delegate(‘click’,function(e){//当事件冒泡至li处,触发回调

},’#continer’,’li’);

<div id="container"><ul>

<li id="item-1"><em>1</em></li><li id="item-2"><em>2</em></li>

</ul> </div>

事件委托

Page 60: Browser Object Model

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

},’#continer’);

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

},’#continer’);

库提供了更多自定义事件

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

Page 61: Browser Object Model

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

Page 62: Browser Object Model

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

Page 63: Browser Object Model