window对象
全局变量会成为window对象的属性,但是全局变量不能通过delete 删除,而直接定义在window对象上的属性可以
var age = 17;
window.color = 'red';
// 在ie9以下浏览器中抛出异常,其他浏览器中返回false
delete window.age;
// 在ie9以下浏览器中抛出异常,其他浏览器中返回true
delete window.color;
console.log(window.age, window.color); // 14, undefined
刚才使用 var 语句添加的 window 属性有一个名为 [[Configurable]] 的特性,这个特性的值被设置为 false , 因此这样定义的属性不可以通过delete 操作符删除。 IE8及更早版本在遇到使用 delete删除 window 属性的语句时,不管该属性最初是如何创建的,都会抛出错误,以示警告。IE9 及更高版本不会抛出错误
窗口关系及框架
<html>
<head>
<title>Frameset Example</title>
</head>
<frameset rows="160,*">
<frame src="frame.htm" name="topFrame">
<frameset cols="50%,50%">
<frame src="anotherframe.htm" name="leftFrame">
<frame src="yetanotherframe.htm" name="rightFrame">
</frameset>
</frameset>
</html>
top 对象始终指向最高(最外)层的框架,也就是浏览器窗口
parent (父)对象始终指向当前框架的直接上层框架。
self ,它始终指向 window ;实际上, self 和 window 对象可以互换使用。引入 self 对象的目的只是为了与 top 和 parent 对象对应起来,因此它不格外包含其他值
Paste_Image.png
窗口位置
用来确定和修改 window 对象位置的属性和方法有很多。IE、Safari、Opera 和 Chrome 都提供了 screenLeft 和 screenTop 属性,分别用于表示窗口相对于屏幕左边和上边的位置。Firefox 则在 screenX 和 screenY 属性中提供相同的窗口位置信息, Safari 和 Chrome 也同时支持这两个属性。 Opera 虽然也支持 screenX 和 screenY 属性,但与 screenLeft 和 screenTop 属性并不对应,因此建议大 家不要在 Opera 中使用它们。使用下列代码可以跨浏览器取得窗口左边和上边的位置。
var leftPos = (typeof window.screenLeft) == 'number' ? window.screenLeft : window.screenX;
var topPos = (typeof window.screenTop) == 'number' ? window.screenTop : window.screenY;
窗口大小
IE9+、Firefox、Safari、Opera 和 Chrome 均为此提供了 4个属性: innerWidth 、 innerHeight 、 outerWidth 和 outerHeight 。IE8 及更早版本没有提供取得当前浏览器窗口尺寸的属性
在IE9+、FireFox、Safari中: outerWidth, outerHeight返回浏览器本身的大小(无论是从最外层的 window 对象还是从某个框架访问)而 innerWidth 和 innerHeight则表示该容器中页面视图区的大小(减去边框宽度)
在Opera中: outerWidth, outerHeight这两个属性的值表示页面视图容器 的大小。 而innerWidth 和 innerHeight则表示该容器中页面视图区的大小(减去边框宽度)
Chrome 中: outerWidth 、 outerHeight 与innerWidth 、 innerHeight 返回相同的值,即视口(viewport)大小而非浏览器窗口大小
location 对象
location 既是window对象, 也是document对象。即:doucment.location 和 window.location 引用的是同一个对象。
location对象直接改变location的值,实际上也是调用assign方法。
window.location = "www.baidu.com";
window.location.href = "www.baidu.com";
这两种方式等价于window.location.assign('www.baidu.com);
网友评论