JavaScript窗口功能指南之关闭窗口 当你创建了一个新窗口时,将open()方法的返回值分配给一个变量非常重要。比如,下面的语句就是创建一个新窗口,然后立即关闭它: win = window.open("http://www.docjs.com/", "js"); win.close(); 每一个浏览器窗口都清楚地与一个window对象对应,所以,当你想引用当前窗口时,你应该使用window对象。下面的语句设置当前窗口的URL: window.location.href = "http://www.docjs.com/"; 当你在脚本程序中放置这样一个语句时,你不需要指定window对象,因为当前窗口的存在是默认的: //from www.w3sky.com location.href = "http://www.docjs.com/"; 注意,self等价于window,所以,self.close()实际上就等于window.close()。 window.location.href = "http://www.docjs.com/"; 关闭窗口 如果你执行close()方法去关闭一个不是由脚本程序打开的窗口,就会出现一个确认对话框让用户选择是否关闭窗口。如果在历史列表中只有当前一个记录,那么在Navigator中就不会出现对话框。然而,如果你使用close()退出最后运行的浏览器实例,确认对话框就会出现。看看下面在2类浏览器中出现的对话框样子:
Launch Window (with JavaScript) Launch Window (with HTML) 第1个链接使用JavaScript的window.open()方法来打开一个窗口,第2个链接简单地使用TARGET属性实现同样目的: <A HREF="javascript:void(window.open('tryclose.html'))">Launch Window (with JavaScript)</A><BR> <A HREF="tryclose.html" TARGET="_blank">Launch Window (with HTML)</A> 页面tryclose.html显示一个按钮,它负责执行window.close()方法: <FORM><INPUT TYPE="button" VALUE="Close Window" onClick="window.close()"></FORM> 当你点击第1个链接打开新窗口后,浏览器就“记住”了它是由一个脚本程序生成的。所以,当你点击按钮时,新窗口不用再确认操作就被关闭。第2个链接是另外一回事了,它不使用任何JavaScript打开一个新窗口,当你点击按钮时,Internet Explorer将显示一个确认对话框。然而,Navigator立即关闭这个窗口,因为,新窗口在会话历史中没有任何文档。 JavaScript允许你在其他的窗口使用一段脚本程序关闭另外一个窗口。 点击后关闭的窗口 <SCRIPT LANGUAGE="JavaScript"> <!-- function launchAbout() { about = window.open("about.html", "about", "height=75,width=250"); return false; } // --> </SCRIPT> <A HREF="about.html" onClick="return launchAbout()">About</A> 点击链接后,生成一个新窗口。然后,你可以在其中点击任何地方,就关闭那个窗口。在文件about.html的HEAD区域,添加下面的脚本程序: <SCRIPT LANGUAGE="JavaScript"> <!-- function closeWin() { window.close(); } if (window.Event) document.captureEvents(Event.ONCLICK); document.onclick = closeWin; // --> </SCRIPT> 依赖性窗口 function openDep() { win = window.open("depwin.html", "dep", "height=200,width=400"); } 如果当前窗口关闭时,或者调入一个新的URL时,我们将使用onUnload事件处理程序来关闭依赖性窗口: <BODY onUnload="closeDep()"> 注意,当前文档被卸载时,新窗口将关闭,即使当前窗口仍然打开。下面是closeDep()函数的代码: function closeDep() { if (win && win.open && !win.closed) win.close(); } 注意,在试图关闭前,我们必须检查窗口是否存在。 (责任编辑:龙舞天翔) |