javascript window对象
1、setTimeOut和setInterval
/* 安排函数f(),作为未来调用的模式 在等待了若干毫秒后调用f() 如果函数参数没有interval,则只调用f()一次 如果函数参数设置interval,没有设置end,则会调用f()不会停止 如果函数参数设置interval,也设置了end,则会调用f()会在end毫秒后停止 只有指定了f(),才会从start=0开始 */ function invote(f,start,interval,end){ if(!start) start = 0; if(arguments.length <= 2){ setTimeout(f,start); }else{ setTimeout(repeat,start); function repeat(){ var h = setInterval(f,interval); if(end){ setTimeout(function(){ clearInterval(h); },end); } } } }
2、浏览器定位和导航
window对象的location的属性引用的是Location对象,它表示当前窗口显示文档的url.
document的对象的location的属性也是引用的Location对象。
window.location === document.location //true
Location的对象属性有href,protocol,host,hostname,port,portname和search,分别表示url的各个部分。
location对象的hash和search表示url中的片段标识符。
search返回的是?之后的url
例子:
提取url中搜索字符串的的参数
function urlArgs(){ var args = {}; var querystring = window.location.search.substring(1); var pars = querystring.split('&'); for(var i=0;i<pars.length;i++){ var pos = pars[i].indexOf('='); if(pos == -1){continue;} var name = pars[i].substring(0,pos); var value = pars[i].substring(pos+1); args[name] = value; } return args; }
3、载入文档
Location的assign()方法可以使窗口载入并显示指定url,replace也有类似的功能,但是replace会删除当前浏览的历史记录!
除了replace和assign方法,还有一个方法是reload(),重新载入当前文档!
使浏览器载入一个新页面的方法最传统的方法是
location = 'http://www.baidu.com';
如果给location设置为一个片段标识符的时候,例如:
location = '#top';
如果当前文档中没有Id为top的元素的时候就会跳转到当前文档的顶部!如果有则跳到当前文档指定的Id的位置!
4、浏览历史
window对象的history属性引用的是浏览器的历史History对象,History的对象的用来把当前的窗口的浏览器记录以列表的形式展示!
history.length;//表示当前浏览器的历史记录的长度!
history对象的back()和forward()表示历史记录的后退按钮!
第三个方法go(),传入一个整数可以在历史列表中前进和后退任意长度的历史记录!
如果窗口包含子窗口iframe时候!它的浏览记录会穿插在父窗口的历史记录中并且按照时间进行排序!这有时候会导致调用主窗口的
前进后退的方法的时候会导致子窗口的url回到上一个地址,而主窗口不变!
5、navigator对象
appName: // web浏览器全称
appVersion: // web浏览器版本信息
userAgent: // 浏览器在USER-AGENT HTTP 头部发送的字符串
platform : // 在其上运行的操作系统的名称
例如:谷歌浏览器
navigator.appName
"Netscape"
navigator.appVersion
"5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.132 Safari/537.36"
navigator.userAgent
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.132 Safari/537.36"
navigator.platform
"Win32"
6、窗体之间的关系
如果一个窗体包含在另一个窗体中,而后者又包含在顶级窗体中,那么该窗体就可以使用parent.parent来引用顶级窗口!top属性是一个通用的
快捷方式,无论一个窗体被嵌套几层,它的top属性都指向包含它的顶级窗口。
如果一个页面中有一个iframe窗口:
例如:
<iframe id="f1" src=""></iframe>
var iframeContent = document.getElementById("f1");
var childCon = iframeContent.contentWindow;//子窗体的对象
window对象有一个frames的属性是类数组的引用,并可以通过数字和名称进行索引。
例如:
第一个窗体:frames[0];
引用第一个窗体的第三个窗体
frames[0].frames[2];
frames[]数组对象引用的不是frame对象而是window对象!
除了可以用数字引用还可以id或者name来进行引用
frames['f1'] 或者frames.f1