8. javacript高级程序设计-BOM
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的更多相关文章
- Javascript高级程序设计——BOM(浏览器对象模型)
BOM(浏览器对象模型),它提供了独立于内容而与浏览器窗口进行交互的对象.BOM由一系列相关的对象构成.一.window对象 window对象表示整个浏览器窗口,但不必表示其中包含的内容.W ...
- 1. javacript高级程序设计-JavaScript简介
JavaScript诞生于1995年,由Netscape公司布兰登·艾奇开发,JavaScript主要包括三个部分: (1). ECMAScript,由ECMA-262定义,提高核心语言功能 (2). ...
- 笔记-JS高级程序设计-BOM篇
BOM提供了很多对象,用于访问浏览器的功能.这些功能与任何网页无关. 1BOM的核心对象是window,它代表浏览器的一个实例,它是通过JS访问浏览器窗口的一个借口,同时又是ECMAScript规定的 ...
- 2020/6/10 JavaScript高级程序设计 BOM
BOM(浏览器对象模型):提供用于访问浏览器的对象. 8.1 window对象 window是BOM的核心对象,表示浏览器的一个实例. JavaScript访问浏览器窗口的接口 ECMAScript规 ...
- 25. javacript高级程序设计-新兴的API
1. 新兴的API requestAnimationFrame():是一个着眼于优化js动画的api,能够在动画运行期间发出信号.通过这种机制,浏览器就能够自动优化屏幕重绘操作 Page Visibi ...
- 24. javacript高级程序设计-最佳实践
1. 最佳实践 l 来自其他语言的代码约定可以用于决定何时进行注释,以及如何进行缩进,不过JavaScript需要针对其松散类型的性质创造一些特殊的约定 l javascript应该定义行为,html ...
- 23. javacript高级程序设计-数据存储
1. 数据存储 1.1 cookie HTTP Cookie, cookie,最初用来在客户端存储回话信息. (1). 限制,不同浏览器对特定域名下的cookie 的个数有限制,每个域名下最好不要操过 ...
- 22. javacript高级程序设计-高级技巧
1. 高级技巧 1.1 函数 l 可以使用惰性载入函数,将任何分支推迟到第一个调用函数的时候 l 函数绑定可以让你创建始终在指定环境中运行的函数,同时函数柯里化可以让你创建已经填写了某些参数的函数 l ...
- 21. javacript高级程序设计-Ajax与Comet
1. Ajax与Comet 1.1 XMLHttpRequest对象 IE5是第一款引入XHR对象的浏览器,IE5中是通过MSXML库中的一个ActiveX对象实现的.因此在IE中可能存在MSXML2 ...
随机推荐
- AngularJS API之equal比较对象
使用情况 1 首先,所有满足 a === 3 这种的对象,在angular.equals(a,b)中都会返回真 2 所有对象的类型,以及属性值都相同的,也会返回真 3 NaN和NaN也会返回真(在ja ...
- EF方便的添加一条信息...
//刚开始通过EF添加数据都是这样的...↓ var db = new DBEntities() T_User t_userinfo = new T_User() { Type = "typ ...
- ios修改textField的placeholder的字体颜色和大小
textField.placeholder = @"username is in here!"; [textField setValue:[UIColor redColor] fo ...
- Ruby注意事项
在Ruby中只有false和nil是'假', 其余都是真(0也是真)
- Mac Pro 安装 Sublime Text 2.0.2,个性化设置,主题 和 插件 收藏
1.到官网下载安装包 http://www.sublimetext.com/2 2.附注册码一枚 ----- BEGIN LICENSE ----- Andrew Weber Single User ...
- Nginx的作用
负载均衡 现在几乎看不到单机奋斗的应用了吧.反向代理服务器可以根据负载均衡算法进行均匀或者自定义的转发.常见的负载均衡算法有:轮转算法(Round Robin).最少连接算法(Least Connec ...
- JS获取地址栏参数
获取地址栏参数(其中name为你所需要的参数值) function GetQueryString(name) { var reg = new RegExp("(^|&)" ...
- ACM-括号匹配问题
对ACM仰慕已久,无奈今天才开始.好吧,遇到的第二个题目就把我难到了.(实话是第一个) 进入正题,下面Copy出题目: 现在,有一行括号序列,请你检查这行括号是否配对. 输入 第一行输入一个数N(0 ...
- Delphi中window消息截获的实现方式(1)
近来笔者在一个项目中需要实现一个功能:模仿弹出菜单的隐藏方式,即鼠标在窗口的非PanelA区域点击时,使得PanelA隐藏. 经过思考,笔者想到通过处理鼠标的点击事件来实现相应功能.但是,究竟由谁 ...
- BZOJ 1355: [Baltic2009]Radio Transmission
Description 一个字符串最短周期. Sol KMP. 最短周期就是 \(n-next[n]\) 证明: 当该字符串不存在周期的时候 \(next[n]=0\) 成立. 当存在周期的时候 \( ...