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

来源:互联网 发布:pb9.0精彩编程100例 编辑:程序博客网 时间:2024/05/16 04:07

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作为全局对象。


0 0
原创粉丝点击