Window 对象和浏览器窗口1:
一个新文档被装载到窗口或框架中时,那个窗口或框架的 Window 对象就会被重置为默认状态,即由前一个文档中的脚本定义的所有属性和函数都将被清除所有存在过的痕迹。其与前一个此窗口打开的文档无半点瓜葛,出身是绝对的清白。
Window 对象和浏览器窗口2:
只要浏览器的顶级窗口存在,那么代表它的Window对象就会一直存在。无论有多少个页面像走城门一样在这个窗口中来来去去,只要浏览器的顶级窗口存在,对它的 Window 对象的引用都有效。这个顶级窗口打开多久,它的Window对象就会戚多久。其生命周期被视为浏览器进程从开始到结束的整个过程。
Window 对象和浏览器窗口3:
当窗口关闭,这个Window对象也不会被销毁,如果在其他窗口中依旧存在对这个Window对象的引用,那么这个对象就不会被无用存储单元回收,虽然这并没有啥实际作用了。
这就好比是frame A 含有一个脚本,它引用了 frame B的 Window 对象,即使 frame B的url地址已经改变,但是frameA对frame B的Window对象的引用依然有效。虽然其已经被重置为默认值,只有一个只读属性closed存在了。
一点点解释:
浏览器窗口引用的 Window 对象是 window 句柄总是存在的。 Window 对象的生命周期可以视为浏览器进程从开始到结束的整个过程。下面代码可以证明 Window 对象的生命周期。嗯。。在书上抄来的,借来一用。呵。
代码如下 | 复制代码 |
<html> <head><title>Window 对象生命周期</title></head> <body> <script type='text/javascript'> new_win = {}; function createWin() { //创建一个新的窗口,new_win为新窗口的引用句柄 new_win = window.open(); new_win.document.write("<input type='button' onclick='window.close();' value='close me'></input>"); } </script> <input type='button' onclick='createWin();' value='click me creat win'></input> <input type='button' onclick='alert(new_win.closed);' value=' alert new win closed status'></input> </body> </html> |
1)Window类的构造函数被调用,新的Window实例产生。
(2)Window实例的Initialized事件被引发。
(3)Window.Activated及Application.Activated事件。Window Activated事件会在整个Window对象的生命周期中被多次引发,每当这个Window成为最顶层窗口时,次事件将被引发。相应的地,当窗口从顶层窗口变成后台窗口时,DeActivated事件将被引发。Application.Activated可能在整个应用程序的生命周期中被多次触发,当程序打开第1个窗口时,或是用户由其他程序切换到该应用程序的某个窗口时,都会触发该事件。
(4)Window.Loaded事件。当这个事件发生时,Window对象应该已经完成向显示器输出的过程。
(5)Window.ContentRendered事件。在Window对象被渲染以后,其中的内容被输出;输出完毕以后,WindowContentRendered事件被引发。这个事件处理完成以后,Window就可以和用户进行交互了。
(6)和用户进行交互。
(7)Window.Closing事件。关闭Window对象时,一般来说就是调用Close方法时。
(8)Window.Unloaded事件。当Window对象从可视元素树中被删除时,该事件被引发。
(9)Window.Closed事件。这是生命周期中的最后一件事情。当这个事件处理完成以后,如果该窗口是应用程序的主窗口,Application对象的Run方法将返回,整个程序结束。
Window对象的属性和方法
名称 | 说明 |
---|---|
Alert | 弹出简单提示框 |
AttachEvent | 注册事件(IE only) |
Blur | 窗口失去焦点 |
ClearInterval | 停止计数器运行 |
ClearTimeout | 取消定时器 |
close | 关闭当前窗口 |
confirm | 确认对话框 |
createPopup | 构造弹出窗口(IE only) |
detachEvent | 取消注册的事件(IE only) |
execScript | 执行脚本(IE only) |
focus | 窗口获得焦点 |
moveBy | 移动窗口 |
moveTo | 移动窗口 |
navigate | 浏览某个URL |
open | 打开新窗口 |
打印当前窗口中的文档内容 | |
prompt | 询问对话框 |
resizeBy | 改变窗口大小 |
resizeTo | 改变窗口大小 |
scroll | 控制滚动条 |
scrollBy | 控制滚动条 |
scrollTo | 控制滚动条 |
setInterval | 设置计数器 |
setTimeout | 设置定时器 |
showHelp | 显示一个帮助文档(IE only) |
showModalDialog | 模态对话框(IE only) |
showModelessDialog | 非模态对话框(IE only) |
toString | 转为字符串 |
名称 | 说明 |
---|---|
Alert | 弹出简单提示框 |
AttachEvent | 注册事件(IE only) |
Blur | 窗口失去焦点 |
ClearInterval | 停止计数器运行 |
ClearTimeout | 取消定时器 |
close | 关闭当前窗口 |
confirm | 确认对话框 |
createPopup | 构造弹出窗口(IE only) |
detachEvent | 取消注册的事件(IE only) |
execScript | 执行脚本(IE only) |
focus | 窗口获得焦点 |
moveBy | 移动窗口 |
moveTo | 移动窗口 |
navigate | 浏览某个URL |
open | 打开新窗口 |
打印当前窗口中的文档内容 | |
prompt | 询问对话框 |
resizeBy | 改变窗口大小 |
resizeTo | 改变窗口大小 |
scroll | 控制滚动条 |
scrollBy | 控制滚动条 |
scrollTo | 控制滚动条 |
setInterval | 设置计数器 |
setTimeout | 设置定时器 |
showHelp | 显示一个帮助文档(IE only) |
showModalDialog | 模态对话框(IE only) |
showModelessDialog | 非模态对话框(IE only) |
toString | 转为字符串 |