1. BOM

1.1 window

BOM的核心对象是window,它表示浏览器的一个实例。在浏览器中,window对象有双重身份,

1.1.1 全局作用域

由于window对象同时扮演着ECMAScript中Global对象的角色,因此所有在全局作用域中声明的变量、函数都会变成window对象的属性和方法。

1.1.2 窗口关系及框架

如果页面中包含框架,则每个框架都拥有自己的window对象,并且保存在frames集合中。在frames集合中,可以通过数值索引(从0开始,从左至右,从上到下)或者框架的名称来访问相应的window对象。

top对象始终指向最高(最外)层的框架,也就是浏览器窗口

parent对象始终指向当前框架的直接上层对象

self对象始终指向window对象

1.1.3 窗口位置

用来确定和修改window对象的属性和方法有很多,

IE,Safari,Opera和Chrome提供了screenLeft和screenTop属性,分别用于表示窗口相对于屏幕左边和上边的位置

Firefox则提供screenX和screenY提供相同的窗口位置信息

1.1.4 窗口大小

跨浏览器确定窗口大小不是一件容易的事,虽然无法确定浏览器窗口本身的大小,但却可以取得页面视口的大小

var pageWidth = window.innerWidth;

var pageHeight = window.innerHeight;

if(typeof pageWidth ! = "number"){

if(document.compatMode == "CSS1Compat"){

pageWidth = document.documentElement.clientWidth;

pageHeight = document.documentElement.clientHeight;

}else{

pageWidth = document.body.clientWidth;

pageHeight =document.body.clientHeight;

}

}

1.1.5 导航和打开窗口

使用window.open()既可以导航到一个特定的URL,也可以打开一个新的浏览器窗口。

这个方法接受四个参数:要加载的URL,窗口目标,一个特定的字符串以及一个新页面是否取代浏览器历史记录中当前加载页面的布尔值。

1.1.6 间歇调用和超时调用

var timeoutid = setTimeout(function() {

alert('hi');

}, 1000); //一秒后调用

clearTimeout(timeoutid); //取消

var intervalid = setInterval(function(){

alert('ho');

},1000); //一秒钟调用1次

clearInterval(intervalid);//取消

1.2 location

location是最有用的BOM对象之一,它既是window对象的属性也是document对象的属性。

属性名

例子

说明

hash

#contents

返回URL中的hash(#后跟0或多个字符),如果URL中不包含散列,则返回空字符串

host

www.wrox.com:80

返回服务器名称和端口号(如果有)

hostname

www.wrox.com

返回不带端口号的服务器名称

href

http:/www.wrox.com

返回当前加载页面的完整URL。而location对象的toString()方法也返回这个值

pathname

/wiley/

返回URL中的目录和(或)文件名

port

8080

返回URL中指定的端口号。如果URL中不存在端口号,则这个属性返回空字符串

protocol

http:

返回页面使用的协议。通常是http:或者https:

search

?q=javascript

返回URL地址中的查询字符串。这个字符串以问号开头

1.3 navigator

主要用来识别客户端浏览器的事实标准

1.4 screen

screen对象基本上只能用来表明客户端的能力,其中包括浏览器窗口外部的显示器信息等。

1.5 history

history对象是window对象的属性,保存着用户上网的历史记录。history存在go,back,forward三个方法用来浏览历史记录。

//后退一页

history.go(-1);

//前进一页

history.go(1);

//前进2页

history.go(2);

//跳转到历史记录的 baidu.com网站

history.go("baidu.com");

//后退一页

history.back();

//前进一页

history.forward();

history对象还有一个length属性,保存在历史记录的数量。这个数量包括所有历史记录,即所有向前和向后的记录。

8. javacript高级程序设计-BOM的更多相关文章

  1. Javascript高级程序设计——BOM(浏览器对象模型)

    BOM(浏览器对象模型),它提供了独立于内容而与浏览器窗口进行交互的对象.BOM由一系列相关的对象构成.一.window对象      window对象表示整个浏览器窗口,但不必表示其中包含的内容.W ...

  2. 1. javacript高级程序设计-JavaScript简介

    JavaScript诞生于1995年,由Netscape公司布兰登·艾奇开发,JavaScript主要包括三个部分: (1). ECMAScript,由ECMA-262定义,提高核心语言功能 (2). ...

  3. 笔记-JS高级程序设计-BOM篇

    BOM提供了很多对象,用于访问浏览器的功能.这些功能与任何网页无关. 1BOM的核心对象是window,它代表浏览器的一个实例,它是通过JS访问浏览器窗口的一个借口,同时又是ECMAScript规定的 ...

  4. 2020/6/10 JavaScript高级程序设计 BOM

    BOM(浏览器对象模型):提供用于访问浏览器的对象. 8.1 window对象 window是BOM的核心对象,表示浏览器的一个实例. JavaScript访问浏览器窗口的接口 ECMAScript规 ...

  5. 25. javacript高级程序设计-新兴的API

    1. 新兴的API requestAnimationFrame():是一个着眼于优化js动画的api,能够在动画运行期间发出信号.通过这种机制,浏览器就能够自动优化屏幕重绘操作 Page Visibi ...

  6. 24. javacript高级程序设计-最佳实践

    1. 最佳实践 l 来自其他语言的代码约定可以用于决定何时进行注释,以及如何进行缩进,不过JavaScript需要针对其松散类型的性质创造一些特殊的约定 l javascript应该定义行为,html ...

  7. 23. javacript高级程序设计-数据存储

    1. 数据存储 1.1 cookie HTTP Cookie, cookie,最初用来在客户端存储回话信息. (1). 限制,不同浏览器对特定域名下的cookie 的个数有限制,每个域名下最好不要操过 ...

  8. 22. javacript高级程序设计-高级技巧

    1. 高级技巧 1.1 函数 l 可以使用惰性载入函数,将任何分支推迟到第一个调用函数的时候 l 函数绑定可以让你创建始终在指定环境中运行的函数,同时函数柯里化可以让你创建已经填写了某些参数的函数 l ...

  9. 21. javacript高级程序设计-Ajax与Comet

    1. Ajax与Comet 1.1 XMLHttpRequest对象 IE5是第一款引入XHR对象的浏览器,IE5中是通过MSXML库中的一个ActiveX对象实现的.因此在IE中可能存在MSXML2 ...

随机推荐

  1. linux网络:常用命令(一)

    1.ifconfig  可以查看Linux的网卡情况 ifconfig eth0 查看 eth0的信息 给一块网卡设置多个ip地址: ifconfig eth0:0 192.168.1.12 255. ...

  2. UnicodeDecodeError: 'utf8' codec can't decode

    数据库存了些中文字符, 比如'处理脚本'这样的汉字, 结果导致一个python程序报错. 下面记录处理过程和相关结论. ===========================dal.py 程序片段,p ...

  3. 基于zepto判断mobile的横竖屏状态

    借用jquery mobile中的代码,删除了一些多余的部分,简单的基于zepto的模块 var CheckOrientation = (function(){ var win = $( window ...

  4. 如何用SQL命令行工具删除dedecms指定id文章

    用dedecms采集时标题字段设置错了,出现了注释符号<!---->,导致后台的文章列表出现错误,也无法直接从列表中删除,可以远程登录数据库去操作,这个相对比较麻烦,想着直接从后台的SQL ...

  5. SparkSql 不支持Date Format (支持Timestamp)

    最近项目中需要用到sparksql ,需要查询sql Date类型, 无奈,官方现阶段 1.6.0 还不支持Date类型,不过支持Timestamp类型,所以问题可以解决了. 1.解析 SimpleD ...

  6. Windows下几个常用的和进程有关的命令

    在windows下,进入cmd,有几个常用的和进程有关的命令: netstat -ano:查看所有进程 netstat -ano|findstr  “端口号”:查看端口号对应的进程PID taskli ...

  7. MySQL中快速复制数据表方法汇总

    本文将着重介绍两个MySQL命令的组合,它将以原有数据表为基础,创建相同结构和数据的新数据表. 这可以帮助你在开发过程中快速的复制表格作为测试数据,而不必冒险直接操作正在运行 的数据表. 示例如下: ...

  8. Unity开发-你必须知道的优化建议

    转自:http://blog.csdn.net/leonwei/article/details/18042603 最近研究U3D开发,个人认为,精通一种新的技术,最快最好的方法就是看它的documen ...

  9. Android应用签名

    http://www.cnblogs.com/ghj1976/archive/2011/07/18/2109381.html 为了要签名? 开发Android的人这么多,完全有可能大家都把类名,包名起 ...

  10. [COJ0985]WZJ的数据结构(负十五)

    [COJ0985]WZJ的数据结构(负十五) 试题描述 CHX有一个问题想问问大家.给你一个长度为N的数列A,请你找到两个位置L,R,使得A[L].A[L+1].…….A[R]中没有重复的数,输出R- ...