JavaScript权威指南读书笔记——第十四章 Window对象

来源:互联网 发布:德语助手软件注册码 编辑:程序博客网 时间:2024/05/29 19:21

计时器

setTimeout()

Window对象的setTimeout()方法用来实现一个函数在指定的毫秒数之后运行。该函数返回一个值,这个值可以传递给clearTimeout()用于取消这个函数运行。

setInterval()

和setTimeout()一样,setInterval()函数也返回一个值,这个值可以传递给clearInterval()用于取消后续函数的调用。

function invoke(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);            }        }    }}

浏览器定位和导航

Document对象的location属性和Window对象的location属性都引用了Location对象。

//  truewindow.location === document.location;

Document对象还有一个URL属性,是文档首次载入后保存该文档的URL静态字符串。

解析URL

location

  • href
  • protocal
  • host
  • hostname
  • port
  • pathname
  • hash描述片段标识符
  • search描述查询字符串

载入新的文档

修改location.href或调用location.assign(),这修改方式其实是一种意思。

调用location.replace(),他在载入新文档之前会从浏览器历史清空。

还有个reload(),重新载入当前文档。

历史记录

Window对象的history属性引用的是该窗口的History对象。History对象额length属性表示浏览器历史列表中的元素数量。出于安全的因素,脚本不能访问已保存的URL。

History对象的back()和forward()方法与浏览器的“后退”和“前进”按钮一样。还有个go()方法,接收一个整数参数,可以在历史列表中向前(正参数)或向后(负参数)跳过任意多个页。

浏览器和屏幕信息

Navigator对象

  • appName属性
    • Web浏览器的全称
  • appVersion
    • 次属性通常以数字开始,并跟着包含浏览器厂商和版本信息的详细字符串
  • userAgent
    • 浏览器在它的SET_AGENT HTTP头部中发送的字符串
  • platform
    • 在其上运行浏览器的操作系统字符串
  • onLine
    • 表示浏览器但是是否连接到网络
  • geolocation
    • Geolocation对象定于用于确定用户地理位置信息
  • javaEnabled()
    • 当前浏览器可以运行java小程序时放回true(非标准的方法)
  • cookiedEnable()
    • 如果浏览器可以保存永久的cookie时,返回true(非标准的方法)

Screen对象

Window对象的screen属性引用的是Screen对象。

属性width和height指定的是以像素为单位的窗口大小

属性availWidth和availHeight指定的是实际可用的显示大小

colorDepth指定的是BPP(bits-per-picel)

对话框

alert()用来像用户显示一条消息。在大部分浏览器中该方法会阻塞

confirm()也可以显示一条消息,要求用户单击“确定”或“取消”按钮,并返回一个布尔值。该方法会阻塞

prompt()同样也显示一条消息,等待用户输入字符串,并放回那个字符串。该方法会阻塞

showModalDialog()显示一个保护HTML格式的“模态对话框”。第一个参数指定对话框HTML的URL。第二个参数是一个任意值,这个值在对话框的脚步中可以通过window.dialogArguments属性访问。第三个参数是非标准的,包含以分号隔开的name=value对。showModalDialog()这个方法指导窗口关闭之前不会放回。当窗口关闭后,window.returnValue属性的值就是次方法返回值。

作为Window对象属性的文档元素

如果在HTML文档中用id属性来为元素命名,并且如果Window对象没有此名字的属性,Window对象会赋予一个属性,他的名字是id属性的值,而他们的值纸箱表示文档元素的HTMLElement对象。

多窗口和窗体

打开窗口

使用Window对象的open()方法可以打开一个新的浏览器窗口,并返回代表那个窗口的Window对象。

它有4个可选的参数。

第一个参数是要在新窗口中显示文档的URL。

第二个参数是新打开的窗口的名字。如果知道的是一个已经存在的窗口的名字,会直接使用已存在的窗口。如果省略此参数,会使用指定的名字“_blank”。

  • _blank
    • 新窗口
  • _self
    • 自身
  • _parent
    • 父窗口
  • _top
    • 顶级祖先窗口

Window对象如果有name属性,就用它保存窗口名字。该属性是可写的,并且脚步可以随意设置。如果传递给window.open()一个除“_blank”之外的名字,通过该调用创建的窗口将以该名字作为name属性的初始值。如果<iframe>元素有name属性,表示该iframe的Window对象会用它作为name属性的初始值。

第三个参数是一个以逗号分隔的列表,包含大小和各种属性,用于表面新窗口是如何打开的。

第四个参数只在第二个参数命名的是一个村庄的窗口才有用。是一个布尔值,如果为true第一个参数指定的URL替换掉窗口浏览历史的当前条目。如果为false在窗口历史中创建一个新的条目。

关闭窗口

调用Window对象的close()方法将关闭一个窗口。

即使一个窗口关闭了,代表它的Window对象仍然存在。已关闭的窗口会有个值为true的closed属性,它的document回事null,它的方法通常也不会再工作。

窗体之间的关系

如果一个窗口是顶级窗口,那么其parent属性引用的就是这个窗口本身

parent == self;

引用窗口或窗体的子孙窗体。窗体是通过<iframe id=”f1”>,那么表示改iframe元素的对象就是。

var iframeElement = document.getElementById("f1");

<iframe>元素有个contentWindow属性,引用窗体的Window对象,所以窗体的Window对象就是:

var childFrame = document.getElementById("f1").contentWindow;

可以进行反向操作,从表示窗体的Window对象来获取该船体的<frame>元素。用Window对象的frameElement属性。

var elt = document.getElementById("f1");var win = elt.contentWindow;//  truewin.frameElement === elt;//顶级窗口来说永远是truewindow.frameElement ===null;

Window对象的frames属性引用的是类数组对象,可以通过数字或窗体名进行索引。

交互窗体中的JavaScript

假设Web页面里有两个<frame>元素,分表叫“A”和“B”,假设这些窗体所包含的文档来自于相同的一个服务器,并且包含交互脚本。窗体A里定义了一个变量i

var i = 3;

这个变量只是全局对象的一个属性,也就是Window对象的一个属性。窗体A中的代码可以用标识符i来引用变量,或者Winow对象显示地引用这个变量

window.i;

由于窗体B中的脚本可以引用窗体A的Window对象,因此它也可以引用那个Window对象的属性

//  改变窗体A中的变量i的值parent.A.i=4;
阅读全文
0 0
原创粉丝点击