BOM学习笔记

来源:互联网 发布:安徽中港金融数据服务 编辑:程序博客网 时间:2024/05/22 08:52

BOM的对象包括:window(核心)、location、navigator、screen、history。

window对象

1.作为js访问浏览器窗口的一个接口;
2.Global对象。

作为Global对象时:
在全局作用域中声明的变量、函数都会变成window对象的属性和方法。
定义全局变量与在window对象上直接定义属性的差别:
全局变量不能通过delete操作删除,而直接在window对象上的定义属性可以;
尝试访问未声明的变量会抛错,但通过查询window对象,可以知道某个可能未声明的变量是否存在,例如:
var newValue=oldValue;//会抛错,oldValue未定义。
var newValue=window.oldValue;//newValue为undefined,这是一次属性访问。

作为js访问浏览器窗口的接口:
1.窗口关系及框架:
如果页面中包含框架,则每个框架都拥有自己的window对象,并且保存在frames集合中,通过window.frames[index]访问框架;
top:最顶层框架(浏览器窗口),语法:window.top.frames[index];
parent:当前框架的直接上层框架,语法:window.parent.frames[index];
self:当前框架,语法:window.self==window。
2.窗口位置

screenLeft和screenTop:在IE和Opera中表示屏幕左边和上边到window对象表示的页面可见区的距离,且window.top更为精准;而在Safari和Chrome中表示整个浏览器窗口相对屏幕的坐标值,且window.top会忽略外边距不精准。
screenX和screenY:在FireFox中表示整个窗口相对屏幕的坐标值,且window.top会忽略外边距不精准。

window.moveTo(x,y):窗口移到新的坐标,window.moveBy(x,y):窗口基于原来位置移动x,y。Opera、IE7+禁用,不适用于框架。

3.窗口大小

innerWidth、innerHeight:页面视图区的大小(减去边框宽度);
outerWidth、outerHeight:在IE9+、Safari、FireFox中表示浏览器窗口本身尺寸,在Opera中表示页面视图容器的大小(单个标签页对应的浏览器窗口),在Chrome中与innerWidth、innerHeight相同。

页面视口大小:document.documentElement.clientWidth、document.documentElement.clientHeight。
以上IE6标准模式才有效,如果是混杂模式,则:
document.body.clientWidth和document.body.clientHeight

window.resizeTo(x,y):浏览器新的宽度和高度;
window.resizeBy(x,y):基于原来大小缩放x,y;
以上两个方法:Opera、IE7+禁用,不适用于框架。

3.窗口打开

window.open(url,窗口目标(_blank,_self,_parent,_top),特性字符串,新页面是否取代当前加载页面的布尔值)。
浏览器对open的拦截:
window.onload拦截,点击等事件触发是不会拦截的,自身窗口打开也不会拦截。

location对象

提供了与当前窗口中加载的文档有关的信息。
window.location==document.location

属性:
hash:返回url中hash(#后跟零或多个字符),如果不包含散列,则返回空字符串,如“#contents”;
host:返回服务器名称和端口号(如果有),如“www.baidu.com:8080”;
hostname:返回不带端口号的服务器名称,如“www.baidu.com”;
href:页面完整的url,如“http://www.baidu.com”;
pathname:返回url中的目录和(或)文件名,如“/News/”;
port:url端口号,没有则返回空字符串,如“8080”;
protocol:返回页面使用的协议,如“http”和“https”;
search:返回url的查询字符串(以问号开头),如“?q=js”。

位置操作
location.assign(url):打开新的url并在浏览器的历史记录中生成一条记录,与location.href和window.location一样的效果;
location.repalce(url):打开新的url但无生成历史记录,也无法回退;
location.reload():重新加载当前页面(有可能从缓存中重载);
location.reload(true):必须从服务器重新加载。

其属性通常用来检测显示网页的浏览器类型。

检测插件(非IE):使用plugins数组,每一项包含下列属性:
name:插件的名字;
description:插件的描述;
filename:插件的文件名;
length:插件所处理的MIME类型数量。

screen对象

表明客户端的能力,包括浏览器窗口外部的显示器信息(不同的浏览器会不同)。

history对象

保存着用户上网的历史记录。

go():调用该方法可以在用户的历史记录任意跳转,没有历史记录则什么都不做。

history.go(-1);//后退一页
history.go(1);//前进一页
history.go(2);//前进两页

history.back();//后退一页
history.forward();//前进一页

length属性:历史记录的数量。

2 0
原创粉丝点击