js-window对象的方法和属性资料

熟练window 对象的 open 、 close 、 alert 、 confirm 、 prompt 、 setTimeout 、 clearTimeout 、 setInterval 、 clearInterval 、 moveBy 、 resizeBy 、 scrollBy 方法的使用
掌握 window 对象的 moveTo 、 resizeTo 、 scrollTo 、 print 方法的使用
熟练掌握 window 对象的 status 、 location 、 name 、 self 、 opener 属性的使用   Window 对象是客户端 javascript 最高层对象之一,只要打开浏览器窗口,不管该窗口中是否有打开的网页,当遇到 BODY 、 FRAMESET 或 FRAME 元素时,都会自动建立 window 对象的实例。另外,该对象的实例也可由 window.open() 方法创建。由于 window 对象是其它大部分对象的共同祖先,在调用 window 对象的方法和属性时,可以省略 window 对象的引用。例如: window.document.write() 可以简写成: document.write() 。  在窗口中觖发本窗口对象的任何方法和属性时可以省去窗口的实例名称。例如给当前的 myWin 窗口设置 status 属性时,可以只用 status 而不用 myWin.status 。但是,在事件处理中调用 location 属性、 close() 方法或 open() 方法时必须使用实例名称。
6-2-1 window 对象的方法
window 对象有以下方法:

open
close
alert
confirm
prompt
setTimeout
clearTimeout
setInterval
clearInterval
moveBy
moveTo
resizeBy
resizeTo
scrollBy
scrollTo
find
back
forward
home
stop
print
blur
focus
captureEvent
enableExternalCapture
disableExternalCapture
handleEvent
releaseEvent
routeEvent
scroll

   1. open 方法
  语法格式:

window.open(URL, 窗口名称 , 窗口风格 )
  功能:打开一个新的窗口,并在窗口中装载指定 URL 地址的网页。

  说明:

open 方法用于打开一个新的浏览器窗口,并在新窗口中装入一个指定的 URL 地址;
open 方法在打开一个新的浏览器窗口时,还可以指定窗口的名称 ( 第二个参数 ) ;
open 方法在打开一个新的浏览器窗口时,还可以指定窗口的风格 ( 第三个参数 ) ,

窗口风格有以下选项,这些选项可以多选,如果多选,各选项之间用逗号分隔:
toolbar :指定窗口是否有标准工具栏。当该选项的值为 1 或 yes 时,表示有标准工具栏,当该选项的值为 0 或 no 时,表示没有标准工具栏;
location :指定窗口是否有地址工具栏,选项的值及含义与 toolbar 相同;
directories :指定窗口是否有链接工具栏,选项的值及含义与 toolbar 相同;
status :指定窗口是否有状态栏,选项的值及含义与 toolbar 相同;
menubar :指定窗口是否有菜单,选项的值及含义与 toolbar 相同;
scrollbar :指定当前窗口文档大于窗口时是否有滚动条,选项的值及含义与 toolbar 相同;
resizable :指定窗口是否可改变大小,选项的值及含义与 toolbar 相同;
width :以像素为单位指定窗口的宽度,已被 innerWidth 取代;
height :以像素为单位指定窗口的高度,已被 innerHeight 取代;
outerWidth :以像素为单位指定窗口的外部宽度;
outerHeight :以像素为单位指定窗口的外部高度;
left :以像素为单位指定窗口距屏幕左边的位置;
top :以像素为单位指定窗口距屏幕顶端的位置;
alwaysLowered :指定窗口隐藏在所有窗口之后,选项的值及含义与 toolbar 相同;
alwaysRaised :指定窗口浮在所有窗口之上,选项的值及含义与 toolbar 相同;
dependent :指定打开的窗口为当前窗口的一个子窗口,并随着父窗口的关闭而关闭,选项的值及含义与 toolbar 相同;
hotkeys :在没有菜单栏的新窗口中设置安全退出的热键,选项的值及含义与 toolbar 相同;
innerHeight :设定窗口中文档的像素高度;
innerWidth :设定窗口中文档的像素宽度;
screenX :设定窗口距离屏幕左边界的像素长度;
screenY :设定窗口距离屏幕上边界的像素长度;
titleBar :指明标题栏是否在新窗口中可见,选项的值及含义与 toolbar 相同;
z-look :指明当窗口被激活时,不能浮在其它窗口之上,选项的值及含义与 toolbar 相同。

open 方法返回的是该窗口的引用。

小技巧:该方法经常用于在打开一个网页时自动打开另一个窗口。

例 6-2-1 :编制一个小程序,它用于在打开当前窗口时自动打开另一个窗口,要

求该窗没有标准工具栏、地址栏、链接工具栏、菜单栏,但有状态栏,窗口中打

开的网页地址为: http://www.dlrtvu.edu.cn 。

2. close 方法
语法格式:

window.close()
功能: close 方法用于自动关闭浏览器窗口。

3. alert 方法
语法格式:

window.alert( 提示字符串 )
功能:弹出一个警告框,在警告框内显示提示字符串文本。

4. confirm 方法
语法格式:

window.confirm( 提示字符串 )
功能:显示一个确认框,在确认框内显示提示字符串,当用户单击“确定”按钮

时该方法返回 true ,单击 “ 取消 ” 时返回 false 。

5. prompt 方法
语法格式:

window.prompt( 提示字符串,缺省文本 )
功能:显示一个输入框,在输入框内显示提示字符串,在输入文本框显示缺省文

本,并等待用户输入,当用户单击“确定”按钮时,返回用户输入的字符串,当

单击“取消”按钮时,返回 null 值。

6. setTimeout 方法
语法格式:

window.setTimeout( 代码字符表达式 , 毫秒数 )
功能:定时设置,当到了指定的毫秒数后,自动执行代码字符表达式。

7. clearTimeout 方法
语法格式:

window.clearTimeout( 定时器 )
功能:取消以前的定时设置,其中的参数是用 setTimeout 设置时的返回值。

8. setInterval 方法
语法格式:

window.setInterval( 代码字符表达式 , 毫秒数 )
功能:设定一个时间间隔后 ( 第二个参数 ) ,反复执行 “ 代码字符表达式 ” 的内容

9. clearInterval 方法
语法格式:

window.clearInterval( 时间间隔器 )
功能:取消 setInterval 设置的定时。其中的参数是 setInterval 方法的返回值。

10. moveBy 方法
语法格式:

window.moveBy( 水平位移量 , 垂直位移量 )
功能:按照给定像素参数移动指定窗口。第一个参数是窗口水平移动的像素,第

二个参数是窗口垂直移动的像素。

11.moveTo 方法
语法格式:

window.moveTo(x,y)
功能:将窗口移动到指定的指定坐标 (x,y) 处。

12. resizeBy 方法
语法格式:

window.resizeBy( 水平 , 垂直 )
功能:将当前窗口改变指定的大小 (x,y) ,当 x 、 y 的值大于 0 时为扩大,小于 0 时

为缩小。

13. resizeTo 方法
语法格式:

window.resizeTo( 水平宽度 , 垂直宽度 )
功能:将当前窗口改变成 (x,y) 大小, x 、 y 分别为宽度和高度。

14. scrollBy 方法
语法格式:

window.scrollBy( 水平位移量,垂直位移量 )
功能:将窗口中的内容按给定的位移量滚动。参数为正数时,正向滚动,否则反

向滚动。

15. scrollTo 方法
语法格式:

window.scrollTo(x,y)
功能:将窗口中的内容滚动到指定位置。

16.find 方法
语法格式:

window.find()
功能:当触发该方法时,将弹出一个“ find”( 查找 ) 对话窗口,并允许用户在触

发 find 方法的页面中查找一个字符串。

注:该属性在 IE5.5 及 Netscape6.0 中都不支持。

17. back 方法
语法格式:

window.back()
功能:模拟用户点击浏览器上的“后退”按钮,将页面转到浏览器的上一页。

说明:仅当当前页面存在上一页时才能进行该操作。

注: IE5.5 不支持该方法, Netscape6.0 支持。

18. forward 方法
语法格式:

window.forward()
功能:模拟用户点击浏览器上的“前进”按钮,将页面转到浏览器的下一页。

说明:仅当当前页面存在下一页时才能进行该操作。

注: IE5.5 不支持该方法, Netscape6.0 支持。

19. home 方法
语法格式:

window.home()
功能:模拟用户点击浏览器上的“主页”按钮,将页面转到指定的页面上。

注: IE5.5 不支持该方法, Netscape6.0 支持。

20. stop 方法
语法格式:

window.stop()
功能:模拟用户点击浏览器上的“停止”按钮,终止浏览器的下载操作。

注: IE5.5 不支持该方法, Netscape6.0 支持。

21. print 方法
语法格式:

window.print()
功能:模拟用户点击浏览器上的“打印”按钮,通知浏览器打开打印对话框打印

当前页。

22. blur 方法
语法格式:

window.blur()
功能:从窗口中移出焦点。当与 focus 方法合用时必须小心,因为可能导致焦点

不断移进移出。

23. focus 方法
语法格式:

window.focus()
功能:使窗口中得到焦点。当与 blur 方法合用时必须小心,因为可能导致焦点不

断移进移出。

24. captureEvent 方法
语法格式:

window.captureEvent(Event)
window.captureEvent( 事件 1| 事件 2|...| 事件 n)
功能:捕捉指定参数的所有事件。由于能够捕获哪些由本地程序自己处理的事件

,所以程序员可以随意定义函数来处理事件。如果有多个事件需要捕捉,各事件

之间用管道符“ |” 隔开。可捕捉的事件类型如下:

Event.ABORT

Event.BLUR

Event.CHANGE

Event.CLICK

Event.DBLCLICK

Event.DRAGDROP

Event.ERROR

Event.FOCUS

Event.KEYDOWN

Event.KEYPRESS

Event.KEYUP

Event.LOAD

Event.MOUSEDOWN

Event.MOUSUEMOVE

Event.MOUSEOUT

Event.MOUSEOVER

Event.MOUSEUP

Event.MOVE

Event.RESET

Event.RESIZE

Event.SELECT

Event.SUBMIT

Event.UNLOAD

25. enableExternalCapture 事件
语法格式:

window.enableExternalCapture(event)
功能: enableExternalCapture 方法用于捕捉通过参数传入的外部事件。

26. disableExternalCapture 事件
语法格式:

window.disableExternalCapture()
功能:取消 enableExternalCapture 方法的设置,终止对外部事件的捕捉。

27. handleEvent 事件
语法格式:

window.handleEvent(event)
功能:触发指定事件的事件处理器。

28. releaseEvent 事件
语法格式:

window.releaseEvent(event)
window.releaseEvent( 事件 1| 事件 2|...| 事件 n)
功能:释放通过参数传入的已被捕捉的事件,这些事件是由

window.captureEvent 方法设置的,可释放的事件与 captureEvent 相同。

29. routeEvent 事件
语法格式:

window.releaseEvent(event)
功能:把被捕捉类型的所有事件转交给标准事件处理方法进行处理,可转交的事

件与 captureEvent 相同。

30 scroll 事件
语法格式:

window.scroll(X 坐标 ,Y 坐标 )
功能:将窗口移动到指定的坐标位置。

6-2-2 window 对象的属性
window 对象具有如下属性:

status

statusbar

statusbar.visible

defaultstatus

location

locationbar

locationbar.visible

self

name

closed

frames

frames.length

length

document

history

innerHeight

innerWidth

menubar

menubar.visible

opener

outerHeight

outerWidth

pageXOffset

pageYOffset

parent

personalbar

personalbar.visible

scrollbar

scrollbar.visible

toolbar

toolbar.visible

top

1. status 属性
语法格式:

window.status= 字符串
功能:设置或给出浏览器窗口中状态栏的当前显示信息。

小技巧:可以使用该属性设置浏览器窗口状态栏信息。

2. statusbar 属性
语法格式:

window.statusbar. 属性
功能: statusbar 属性本身也是一个对象,用于访问它自已的 visible 属性从而确

定状态栏是否可见。

注: IE5.5 浏览器不支持该属性。

3. statusbar.visible 属性
语法格式:

window.statusbar.visible
功能:检查状态栏是否可见,如果可见则返回 true ,反之返回 false 。

注: IE5.5 浏览器不支持该属性。

4. defaultstatus 属性
语法格式:

window.defaultstatus[= 字符串 ]
功能: defaultstatus 属性值是浏览器窗中状态栏的默认显示信息。

5.location 属性
语法格式:

window.location=URL
功能:给出当前窗口的 URL 信息或指定打开窗口的 URL 。

6. locationbar 属性
语法格式:

window.locationbar. 属性
功能: locationbar 属性也可以看成是一个子对象,这个属性用来获取它自已的

visible 属性来确定位置栏是否可见。

到目前为止,该属性只有一个子属性: visible 。

注: IE5.5 不支持该属性。

7. locationbar.visible 属性
语法格式:

window.locationbar.visible
功能:返回位置栏是否可见,如果可见返回 true ,反之返回 false 。

注: IE5.5 不支持该属性。

8. self 属性
语法格式:

window.self. 方法
window.self. 属性
功能:该属性包含当前窗口的标志,利用这个属性,可以保证在多个窗口被打开

的情况下,正确调用当前窗口内的函数或属性而不会发生混乱。

9. name 属性
语法格式:

window.name= 名称
功能:返回窗口名称,这个名称是由 window.open() 方法创建新窗口时给定的。

在 javascript1.0 版本中,这个属性只能用于读取窗口名称,而到了

javascript1.1 版本时,可以用这个属性给一个不是用 window.open() 方法创建的

窗口指定一个名称。

10. closed 属性
语法格式:

window.closed
功能: closed 属性用于返回指定窗口的实例是否已经关闭,如果关闭,返回 true

,反之返回 flase 。

11. frames 属性
语法格式:

window.frames[" 框架名称 "]
window.frames[ 数值 ]
功能: frames 属性是一个数组,用来存储文档中每一个由元素创建的子窗口 ( 框

架 ) 实例,其中的下标即可以是次序号也可以是用 FRAME 元素的 NAME 属性指定的名

称来得到并使用。

12. frames.length 属性
语法格式:

window.frames.length
功能: frames.length 属性用于给出文档中子窗口 ( 框架 ) 实例的个数。

13. length 属性
语法格式:

window.length
功能: length 属性返回一个窗口内的子窗口数目,该属性与

window.frame.length 属性的值相同。

14. document 属性
语法格式:

window.document. 事件
window.document. 方法
window.document. 属性
功能: window 对象的子对象 document 是 javascript 的核心对象,在脚本中遇到

BODY 元素时创建一个实例。

15. history 属性
语法格式:

window.history[ 数值 ]
window.history. 方法 ()
window.history. 属性
window 对象的子对象 history 是 javascript 的核心对象之一,该属性包含了一个

已访问过页面的名称和 URL 的数组。

16. innerHeight 属性
语法格式:

window.innerHeight= 数值
功能:返回或指定浏览器窗口中文档的像素高度,这个高度不包括任何工具栏和

组成窗口的页面修饰高度。

注: IE5.5 不支持该属性。

17. innerWidth 属性
语法格式:

window.innerHeight= 数值
功能:返回或指定浏览器窗口中文档的像素宽度,这个宽度不包括任何工具栏和

组成窗口的页面修饰宽度。

注: IE5.5 不支持该属性。

18. menubar 属性
语法格式:

window.menubar. 属性
功能: menubar 属性也可以看成是一个子对象,这个属性用来获取它自已的

visible 属性来确定菜单栏是否可见。

到目前为止,该属性只有一个子属性: visible 。

注: IE5.5 不支持该属性。

19. menubar.visible 属性
语法格式:

window.menubar.visible
功能: menubar.visible 属性用于返回菜单栏是否可见,如果可见返回 true ,反

之返回 false 。

注: IE5.5 不支持该属性。

20. opener 属性
语法格式:

window.opener
window.opener. 方法
window.opener. 属性
功能: opener 属性与打开该窗口的父窗口相联系,当访问子窗口中 operer 属性时

,返回的是父窗口。通过该属性,可以使用父窗口对象中的方法和属性。

21. outerHeight 属性
语法格式:

window.outerHeight
功能: outerHeight 属性用于访问浏览器窗口的像素高度,该高度包括工具栏和

装饰边的高度。

注: IE5.5 不支持该属性。

22. outerWidth 属性
语法格式:

window.outerWidth
功能: outerWidth 属性用于访问浏览器窗口的像素宽度,该宽度包括工具栏和装

饰边的宽度。

注: IE5.5 不支持该属性。

23. pageXOffset 属性
语法格式:

window.pageXOffset= 数值
功能:指定浏览器窗口中文档左上角在窗口中的当前水平像素位置。在利用

moveTo 移动之前,可以通过该属性来决定是否需要移动窗口。因为该属性返回了

可见文档相对整个页面的当前位置。

注: IE5.5 不支持该属性。

24. pageYOffset 属性
语法格式:

window.pageYOffset= 数值
功能:指定浏览器窗口中文档左上角在窗口中的当前垂直像素位置。在利用

moveTo 移动之前,可以通过该属性来决定是否需要移动窗口。因为该属性返回了

可见文档相对整个页面的当前位置。

注: IE5.5 不支持该属性。

25. parent 属性
语法格式:

window.parent.frames[ 数值 ]
window.parent.framesName
功能:访问各个子窗口 ( 多框架 ) 所在的父窗口。

26. personalbar 属性
语法格式:

window.personalbar. 属性
功能: personalbar 属性本身也是一个对象,用于访问其自身的 visible 属性来确

定个人栏是否可见。

注: IE5.5 不支持该属性。

27. personalbar.visible 属性
语法格式:

window.personalbar.visible
功能:确定个人栏是否可见,如果可见则返回 true ,反之返回 false 。

注: IE5.5 不支持该属性。

28. scrollbars 属性
语法格式:

window.scrollbars. 属性
功能: scrollbars 属性本身也是一个对象,用于访问其自身的 visible 属性来确

定滚动栏是否可见。

注: IE5.5 不支持该属性。

29. scrollbars.visible 属性
语法格式:

window.scrollbars.visible
功能: scrollbars.visible 用于确定滚动栏是否可见,如果可见则返回 true ,反

之返回 false 。

注: IE5.5 不支持该属性。

30. toolbar 属性
语法格式:

window.toolbar. 属性
功能: toolbar 属性本身也是一个对象,用于访问它自已的 visible 属性从而确定

工具栏是否可见。

注: IE5.5 不支持该属性。

31. toolbar.visible 属性
语法格式:

window.toolbar.visible
功能: toolbar.visible 属性用于检查工具栏是否可见,如果可见则返回 true ,

反之返回 false 。

注: IE5.5 不支持该属性。

32. top 属性
语法格式:

window.top.frames[ 数值 ]
window.top.frameName
window.top. 方法 ()
window.top. 属性
功能: window 对象的 top 属性用于包含所有装入浏览器的子窗口 ( 多框架 ) 的最顶层窗口的信息。

getAttribute()方法
●一份文档就是一棵节点树。

  ●节点分为不同的类型:元素节点、属性节点和文本节点等。

  ●getElementById()方法将返回一个对象,该对象对应着文档里的一个特定的元素节点。

  ●getElementsByTagName()方法将返回一个对象数组,它们分别对应着文档里的一个特定的元素节点。

  ●这些节点中的每个都是一个对象。

接下来,我们将向大家介绍几个与这些对象相关联的属性和方法。

3.4.1 getAttribute()方法

至此,我们已经向大家介绍了两种检索特定元素节点的办法:一种是使用getElementById()方法,另一种是使用 getElementsByTagName()方法。在找到那个元素后,我们就可以利用getAttribute()方法把它的各种属性的值查询出来。

getAttribute()方法是一个函数。它只有一个参数——你打算查询的属性的名字:

object.getAttribute(attribute)
不过,getAttribute()方法不能通过document对象调用,这与我们此前介绍过的其他方法不同。我们只能通过一个元素节点对象调用它。

例如,你可以把它与getElementsByTagName()方法结合起来,去查询每个<p>元素的title属性,如下所示:
var text=document.getElementsByTagName("p")
for (var i=0;i<text.length;i++)
{
alert(text[i].getAttribute("title"));

}
如果把上面这段代码插入到前面给出的“购物清单”示例文档的末尾,并在Web浏览器里重新加载这个页面,屏幕上将弹出一个显示着文本消息“a gentle reminder”的alter对话框。

在“购物清单”文档里只有一个带有title属性的<p>元素。假如这份文档还有一个或更多个不带title属性的<p>元素,则相应的getAttribute("title")调用将返回null。null是JavaScript语言中的空值,其含义是“你说的这个东西不存在 ”。如果你们想亲自验证一下这件事,请先把下面这段文本插入到“购物清单”文档中的现有文本段落之后:
<p>This is just test</p>
然后重新加载这个页面。这一次,你们将看到两个alter对话框,而第二个对话框将是一片空白或者是只显示着单词“null”——具体情况要取决于你的Web浏览器将如何显示null值。

可以修改我们的脚本,让它只在title属性存在时才弹出一条消息。我们将增加一条if语句来检查getAttribute()方法的返回值是不是null。趁着这个机会,我们还增加了几个变量以提高脚本的可读性:
var ts=document.getElementsByTagName("li");
for (var i=0; i<ts.length;i++)
{text=ts[i].getAttribute("title");


if(text!=null)
{
alert(text)
}
}
现在,如果重新加载这个页面,你们将只会看到一个显示着“a gentle reminder”消息的alter对话框,如下所示。


我们甚至可以把这段代码缩得更短一些。当检查某项数据是否是null值时,我们其实是在检查它是否存在。这种检查可以简化为直接把被检查的数据用做if语句的条件。if (something)与if (something != null)完全等价,但前者显然更为简明。此时,如果something存在,则if语句的条件将为真;如果something不存在,则if语句的条件将为假。

具体到这个例子,只要我们把if (title_text != null)替换为if (title_text),我们就可以得到更简明的代码。此外,为了进一步增加代码的可读性,我们还可以趁此机会把alter语句与if语句写在同一行上,这可以让它们更接近于我们日常生活中的英语句子:
var ts=document.getElementsByTagName("li");
for (var i=0; i<ts.length;i++)
{text=ts[i].getAttribute("title");


if(text) alert(text)

}
3.4.2 setAttribute()方法

我们此前介绍给大家的所有方法都只能用来检索信息。setAttribute()方法与它们有一个本质上的区别:它允许我们对属性节点的值做出修改。

类似于getAttribute()方法,setAttribute()方法也是一个只能通过元素节点对象调用的函数,但setAttribute()方法需要我们向它传递两个参数:

obiect.setAttribute(attribute,value)
在下面的例子里,第一条语句将把id属性值是purchase的元素检索出来,第二条语句将把这个元素的title属性值设置为a list of goods:

var shopping=document.getElementById("purchases")
shopping.setAttribute("title","a list of goods")
我们可以利用getAttribute()方法来证明这个元素的title属性值确实发生了变化:
var shopping=document.getElementById("purchases");
alert(shopping.getAttribute("title"));
shopping.setAttribute("title","a list of goods");
alert(shopping.getAttribute("title"));
上面这些语句将在屏幕上弹出两个alert对话框:第一个alter对话框出现在setAttribute()方法被调用之前,它将是一片空白或显示着单词“null”;第二个出现在title属性值被设置之后,它将显示着“a list of goods”消息。

在上例中,我们设置了一个现有节点的title属性,但这个属性原先并不存在。这意味着我们发出的setAttribute()调用实际完成了两项操作:先把这个属性创建出来,然后再对其值进行设置。如果我们把setAttribute()方法用在元素节点的某个现有属性上,这个属性的当前值将被覆盖。

在“购物清单”示例文档里,<p>元素已经有了一个title属性,这个属性的值是a gentle reminder。我们可以用setAttribute()方法来改变它的当前值:

<script type="text/javascript">
var ts=document.getElementsByTagName("li");
for (var i=0; i<ts.length;i++)
{
var text=ts[i].getAttribute("title");
alert(ts[i].getAttribute("title"))
if(text)
{
ts[i].setAttribute("title","我会成功!")
alert(ts[i].getAttribute("title"))
}
}
上面这段代码将先从文档里把已经带有title属性的<p>元素全部检索出来,然后把它们的title属性值全部修改为 brand new title text。具体到“购物清单”文档,属性值a gentle reminder将被覆盖。

这里有一个非常值得关注的细节:通过setAttribute()方法对文档做出的修改,将使得文档在浏览器窗口里的显示效果和/或行为动作发生相应的变化,但我们在通过浏览器的view source(查看源代码)选项去查看文档的源代码时看到的仍将是原来的属性值——也就是说,setAttribute()方法做出的修改不会反映在文档本身的源代码里。这种“表里不一”的现象源自DOM的工作模式:先加载文档的静态内容、再以动态方式对它们进行刷新,动态刷新不影响文档的静态内容。这正是DOM的真正威力和诱人之处:对页面内容的刷新不需要最终用户在他们的浏览器里执行页面刷新操作就可以实现

你可能感兴趣的:(window)