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 ...
随机推荐
- Mysql函数:Last_insert_id()语法讲解
Mysql函数可以实现许多我们需要的功能,下面介绍的Mysql函数Last_insert_id()就是其中之一,希望对您学习Mysql函数能有所帮助. 自动返回最后一个INSERT或 UPDATE 查 ...
- H5 使用
关闭页面 http://www.bcty365.com/content-146-3343-1.html 回退页面: plus.key.addEventListener('backbutton', fu ...
- 如何理解clear的css属性?
参考文章: http://www.cnblogs.com/iyangyuan/archive/2013/03/27/2983813.html clear: 只影响使用 clear样式属性的 元素本身, ...
- jQuery源码-jQuery.fn.attr与jQuery.fn.prop
jQuery.fn.attr.jQuery.fn.prop的区别 假设页面有下面这么个标签,$('#ddd').attr('nick').$('#ddd').prop('nick')分别会取得什么值? ...
- Ruby类的继承
Ruby继承的语法 class DerivedClass < BaseClass #some stuff end < 为继承符号 重写(override) 的概念 有时, 我们希望子类从父 ...
- torch 入门
torch 入门1.安装环境我的环境mac book pro 集成显卡 Intel Iris不能用 cunn 模块,因为显卡不支持 CUDA2.安装步骤: 官方文档 (1).git clone htt ...
- CHAP算法C++实现
CHAP是一种挑战响应式协议. CHAP全称为:Challenge Handshake Authentication Protocol. CHAP密码 = 一个字节的标识符 + MD5(一个字节的标识 ...
- jQuery Validate 表单验证
在做网页表单时时常需要在客户端对表单填写的数据进行验证一番才能提交,我们可以通过自己编写JavasScript代码来验证,但是有时数据量过多时就会有些难度了.基于jQuery的jquery.valid ...
- windows 下wamp环境2 配置之mysql的安装
安装配置mysql 5.7 打开mysql官网: https://www.mysql.com/ 点击downloads,然后选择commuity 选择MySQL Community Server选择对 ...
- jquery版瀑布流
一个月前用jquery实现了瀑布流效果,看着当时的代码有点难过……今天抽时间稍微修改了一下.额,现在看起来不是那么难受了,就来和大家分享一下.废话不多说,开始正题~ 一.演示效果 二.html代码 & ...