在前面的JS章节中,经过对JS的学习,你会发现JS与PHP除了一部分语法不同,运行的环境不同,两种编程所实现的效果差异不大。如果是这样的话,那我们会了PHP干嘛还要学习JS?
的确,如果JS没有后面章节的内容,那它真没有学习的必要。从这节开始,我们学习的JS大部分知识将是PHP所不能实现的,这也是我们学习JS的主要原因。
我们开始学习BOM。
BOM,Browser Object Model,浏览器对象模型,是一个规范,是一个标准,是一个接口。
BOM,使用JS操作或访问浏览器各组件的一种途径。
详解:
1)window对象:浏览器窗口对象。
我们可理解为是BOM中最大的对象。在页面中定义一个变量和函数,如果没有指定是哪个对象的变量、函数,默认就是window对象的变量、函数。
在书写方面可省略“window”。
alert这个弹窗函数其实是window对象的方法。
2)下面这五个对象,是window对象中的子对象。(可理解为window对象的属性)
history对象:历史记录对象。
navigator对象:浏览器对象。如:浏览器软件及版本的检测。
screen对象:显示器屏幕对象。
location对象:地址栏对象。使用JS可以操作地址栏中的各个部分。
document对象:一个网页就是一个document对象。先有窗口,再有网页。
document对象下的write方法可是我们常用的页面输出方法。
document对象是重要的对象,后面重点学习。
额外介绍:
DOM,Document Object Model,文档对象模型,是一个规范,是一个标准,是一个接口。
BOM和DOM不是网景公司的,也就是说不是JS的。是W3C定义的一个规范。这个规范,在浏览器中以“对象”的方式得以实现。不管BOM还是DOM,都是一组对象。
DOM就是网页中各标记,每个标记都是一个DOM对象。
window对象
Window 对象表示浏览器中打开的窗口。
打开W3CSchool手册,搜索“window”-》点击“window对象”
先看下window对象都有哪些属性和方法:
注意:
1)在定义一个全局变量时,不要和上面的属性和方法重名了。
2)不知大家有没有注意到上图中,每一项右边有三个值。这些值的意思是指每个属性和方法是否被浏览器支持。
JS毕竟是在客户端浏览器运行的,所以会有一个不好的地方,那就是兼容性问题。不同浏览器部分地方不一样,越是高版本浏览器越规范同一。(兼容性的问题我们不去细研究了)
说明:window对象挺重要的,有些属性和方法一定要了解的。
部分属性和方法给大家演示下:
window对象属性:
1)获取浏览器的宽和高
innerWidth:窗口的内宽(不含地址栏、菜单栏、状态栏等)。IE不支持。如:window.innerWidth
IE中,可使用<html>标记对象的属性clientWidth来代替。如:document.documentElement.clientWidth
innerHeight:窗口的内高(不含地址栏、菜单栏、状态栏等)。IE不支持。如:window.innerHeight
IE中,可使用<html>标记对象的属性clientHeight来代替。如:document.documentElement.clientHeight
PHP是没有办法获取用户浏览器窗口尺寸的,只能用JS获取。这些参数对页面特效、页面排版非常有用。
额外提示下:JS的属性和方法命名大部分遵循的是“小驼峰命名法”。W3CSchool手册里innerWidth、innerHeight全小写了,这是不对的。W3CSchool手册在细节上会有点小错,大家注意下。
2)top、parent、self属性
在PHP中,我们知道依靠session、cookie可以跨页面传输数据。而JS中,是否可以在不同的页面之间传输数据呢?
在JS中,两个页面如果是“父与子”的关系,是可以做到传输数据的。两个页面之间怎么建立父与子的关系?使用框架标签可建立关系。
22parent.html使用框架标签(15行代码)引入了22son.html文件,它们之间建立了父子关系,22son.html可以调用22parent.html里的函数。
注意下:这次演示不是直接用浏览器打开本地HTML文件,而是通过域名访问的HTML文件。因为直接本地打开HTML文件没有效果。
window的parent属性是“父窗口”的意思,self属性是“自己窗口”的意思,top属性是“最顶层窗口”的意思。
了解下,这几个属性以后用的也不多。如果遇到这样的代码,要能看懂。
额外说明:
window对象属性有很多的,手册里列的不全,我们可以使用for...in语句把所有的属性打印出来。方法也看做属性,会被打印出来。