window对象
- 全局:
var a;//全局变量,会被添加到window对象中
window.b;
(1)delete可以删除b,但不能删除a(a的[[configurable]]是false);
(2)尝试访问未声明的变量会报错:
var x = c;//c是未声明的变量,报错
var x = window.c;//相当于是一次查询变量的行为,不会报错 - 窗口关系和框架
window对象指的是每个框架的特定全局实例
top指向浏览器窗口,也就是最外层框架
parent指向当前框架的直接上层框架
在最外层,可以使用top.frames[0]或者top.frames[“name”]或者frames[0]、frames[“name”]来访问里面的框架,注意,name属性:除非最外层是window.open()打开,否则不会有name属性
使用window.parent.parent.frames[0]等等,可以将不同层次的window对象连缀起来 - 窗口位置
sceenTop、screenLeft用来确定窗口相对于屏幕左上角的距离
有些浏览器会使用screenX和SceenY来确定,跨浏览器时无法得到精确的距离
moveTo()和moveBy()可以将一个窗口精确地移动到一个位置,一个是移动到,一个是移动的距离,接收两个参数 - 窗口大小
window.innerWidth
window.innerHeight可视窗口大小
IE9- 需要使用DOM获取,根据标准Or混杂模式,使用documentElement或者是body的clientWidth
resizeTo(100, 100);//重新调整窗口大小,调整到100*100
resizeBy(100,50);//调整到200*150(100+100, 100+50) - 导航和打开窗口
window.open():可以导航到新的url,也可以打开新的窗口
四个参数:
window.open(url, target, description, boolean);
url:导航至url(如果没有,则打开新窗口)
target:导航至target指定的位置,这是window.name的值,如果这个值在已有窗口或者框架中存在,就在指定位置打开窗口;如果不存在,就打开新窗口,新窗口的window.name 就是这个值。如果这个值为空,则新打开的窗口的window.name就是空
description: 对于新窗口的特性的描述,有宽高、位置、是否允许拖拽等等各类信息,若为空,则按照默认属性设置新窗口
boolean:表示新窗口是否取代历史记录中当前加载页面
window.open()可以返回对新窗口的引用,通过close()可以关闭新窗口 - 间隔调用和超时调用
var id= setTimeout();
clearTimeout(id);//可以取消这个超时调用
注意:超时调用在全局作用域中执行,里面的this对象指向的是window
var id = setInterval();
clearInterval(id);
一般使用setTimeout来模拟setInterval,优势:防止丢间隔、保证时间间隔 - 系统对话框
alert(str):弹出str+确认按钮
confirm(str);弹出str+确认和取消按钮,返回值:用户点击确认按钮,返回true,否则返回false
prompt(str,str1):弹出str和一个输入框(默认值是str1)+确认和取消按钮,返回用户输入的值,如果用户点击取消或者叉号,返回null
window.print();弹出当前页面的打印导航
location对象
location保存着当前文档的信息,window.location 和 document.location指向同一个对象
- 查询字符串参数
function query(str) {
let qs = (str.length > 0) ? str.subString(1) : "" ;
let arr = (qs.length > 0) ? qs.split("&") : [] ;
let len = arr.length;
let args = {};
for(var i=0;i<len;i++) {
var items = arr[i].split("=");
args[items[0]] = items[1] ;
}
return args;
}
- 位置操作
(1)location.assign(url)在当前页面打开新的页面,保留后退按钮(历史记录中有原有网址)(window.location、location.href都是调用的这个方法)
除此之外,改变location的hash、search、port、hostname、pathname也可以改变当前加载的页面
(2)location.replace(url)不保留当前加载的页面,加载新页面后,无法后退到原来的页面
(3)location.reload(boolean)重新加载当前页面,当参数为true时,表示从服务器重新加载。否则可能从浏览器缓存中加载
navigator对象
客户端浏览器相关信息
screen
这里是客户端显示器相关的信息
history对象
当页面的url发生变化时,就会生成一个条历史记录,history对象记录了这些历史记录。使用history.go()函数,可以跳转到指定页面
history.go(1);前进一页
history.go(2);前进两页
history.go(-1);后退一页
history.go(“www.baidu.com”);跳到最近的百度页面
简写:history.back()和history.forward();
history.length如果等于0,那么此页面就是用户打开的第一个页面
当我们需要自定义前进或者后退时,以及判断是否是用户打开的第一个页面,那么就必须使用history