您的位置:首页 > Web前端 > JavaScript

《JavaScript权威指南》——Window对象

2016-06-28 16:44 417 查看
1.计时器。

setTimeout()和setInterval()用来注册指定的时间之后单次或重复调用的函数。前者是在指定毫秒之后运行一次,而后者是在指定毫秒数的间隔里重复调用。
clearTimeout()和clearInterval()分别对应以上两种方法返回的值,传递给对应函数,用户取消函数执行。
/*
* 定时器应用函数
* 安排函数f()在未来的调用模式
* 在等待若干秒之后调用f()
* */
function invoke(f,start,interval,end) {
if(!start) strat = 0;
//arguments由实参数量组成的类似于数组对象
if(arguments.length <=2) {
setTimeout(f,strart);
}
else {
setTimeout(repeat,start);
function repeat() {
var h = setInterval(f,interval);
//end毫秒后停止调用,前提end已经定义
if(end) setTimeout(function() {clearInterval(h);},end)
}
}
}
2.游览器定位和导航
Window对象的location属性引用的是Location对象,表示该窗口中当前显示的文档的URL。
Document对象的location属性也引用的是Location对象。Location对象会做出相应的改变。
window.location ===document.location //返回true
Document对象的URL属性,是文档首次载入后保存该文档的URL静态字符串,不会发生改变。

解析URL  Lcation对象的href属性包含URL的完整文本。同时Location对象的其他属性——protocol,host,hostname,port,pathname。search,成为“URL分解”属性
/*
* 这个函数用来解析url的查询串中name=value参数对
* 将name=value对存储在一个对象的属性中,并返回这个对象
* */
function urlArgs() {
var args = {};
var query = location.search.substring(1);
//split() 方法用于把一个字符串分割成字符串数组。
var pairs = query.split("&");
for(var i=0; i<pairs.length; i++){
//indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。
// 如果要检索的字符串值没有出现,则该方法返回 -1。
var pos = pairs[i].indexOf('=');
if(pos==-1) continue;
//stringObject.substring(start,stop)
var name = pairs[i].substring(0,pos);
var value = pairs[i].substring(pos+1);
value = decodeURIComponent(value);
args[name] = value
}
return args;
}
//使用这个方法
var args = urlArgs();
console.log(args);
var q =args.q || "";//
var n = args.n ? parseInt(args.n):10;


载入新的文档

Location对象的assign()和replace()都可以使窗口载入并显示你指定的URL中的文档。但replace()在载入新的文档之前会从游览历史中把当前文档删除。
检测到用户的游览器不知处某些特性来显示功能齐全版本,可以用location.replace()来载入一个新的静态文档。

/*
* 如果游览器不支持XMLHttpRequest对象
* 则将其重新定向到一个不需要Ajax的静态页面
*/
if (!XMLHttpRequest) location.replace("staticpage.heml");//相对URL,根据当前目录来解析

Location对象的reload()方法,可以让游览器重新载入当前文档
直接把新的URL赋给location属性,来实现页面转跳
3.游览历史

Window对象的history属性引用的是该窗口的History对象。
History对象是用来把窗口的游览历史用文档和文档状态列表的形式表示。
History对象的的back()和forward()方法就是转跳到前一个文档或者是后一个文档,或者通过go()方法来跳到任意页面。

4.游览器和屏幕信息

Window对象的navigator和screen属性,分别引用了Navigator和Screen对象。
Navigator对象包含游览器的厂商和版本信息。
Screen对象提供有关窗口显示的大小和可用的颜色数量。

5.对话框

alert()
confirm()
prompt()
这些对话框显示的都是纯文本,而不是HTML格式的文本,可能会产生阻塞。

6.错误处理

window对象的onerror属性是一个事件处理程序,处理函数的调用通过三个字符串参数:

第一个参数:描述错误信息
第二个参数:存放引发错误的javascript代码所在文档的url
第三个参数:文档发生错误的行数

7.作为window对象属性的文档元素

如果在html文档中用id属性来为元素命名,并且window对象没有该属性,id的值会成为window对象赋予属性的名字,它们的值指向表示文档元素的HTMLElement对象。

8.多窗口和窗体

由<iframe>所创建的嵌套游览上下文是用它自己的window对象。

window对象的open()方法:第一个参数是在新窗口显示文档的url,第二个参数是新打开的窗口的名字,如果省略此参数,使用指定名字“_blank”,第三个参数是一个可选的的以逗号分隔的列表,包含大小和各种属性,来表明新窗口是如何打开的。(第三个参数是非标准的。)

open()的返回值代表命名或新创建的窗口的window对象。var w = window.open();
w.alert("http://www.baidu.com");
w.location = "http://www.baidu.com";
w.close();

创建的窗口中,opener属性引用的是打开它的脚本的window对象。

(为了避免混淆window对象的close()方法和document对象的close()对象,必须显示使用——window.close())
窗体之间的关系——任何窗口或窗体中的javascript代码都可以将自己的窗口引用为window对象或self,窗体可以用parent属性引用包含它的窗口或窗体的window对象。

若窗体为顶级窗口,parent == self,返回true。可以用top属性来引用窗口本身。

<iframe id="f1">,表明该iframe的元素对象   var  iframeElement = document.getElementById("f1");

<iframe>元素有contentWindow属性 var childFrame =  document.getElementById("f1").contentWindow;

每个Window对象都有一个frames属性,它引用自身包含的窗口或窗体的子窗体。frames属性引用的是类数组对象,数组里的元素是window对象,通过数字或窗体名进行索引。

每个窗口和窗体都是它自身的JavaScript执行上下文,以window作为全局对象。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: