无提示关闭窗口怎么做
解决思路:
因为目前关闭窗口的方法都不能完全兼容IE5以上的版本,所以需要根据用户浏览器版本而执行不同的代码。如果版本为6.0以下,用HHC控件关闭,否则用声明当前窗口为子窗口的方法关闭。
具体步骤:
1. 对于IE6.0+SP1以下版本的浏览器,下面的代码能正常运行:
<object classid=clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11 id="CLS" type=application/x-oleobject>
<param name="Command" value="Close">
</object>
<button onClick="CLS.Click()">关闭窗口</button>
在IE6.0+SP1上运行,单击【关闭窗口】按钮后提示,如图1.5.15所示:
图1.5.15在打了SP1的IE6上用HHC控件关闭窗口
2. 对于IE5.5以上版本的浏览器,下面的代码能正常运行:
<object classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0 id=WebBrowser width=0></object>
<button onClick="WebBrowser.ExecWB(45,1)">关闭窗口</button>
3.如果当前窗口是用window.open()方法弹打开的子窗口,直接用下面的代码就可以关闭:
<button onClick="self.close()">关闭窗口</button>
在非子窗口中运行后单击【关闭窗口】按钮,会有一个确认对话框(图1.5.16)。
图1.5.16 在没有父窗口的窗口中用close方法关闭窗口
4. 对于IE6.0以上版本的浏览器,下面的代码能正常运行:
<button onClick="self.opener=null;self.close()">关闭窗口</button>
这个方法类似于3,但需要用self.opener=null(null也可以换成任意值)声明当前窗口为子窗口(骗IE的而已)
5.上面的1、2、4三种方法中任意一个单独应用,都无法兼容所有版本的IE浏览器,但方法1和方法2或4的并集都是全集,所以可以通过判断IE版本来执行相应代码:
<script>
function closeit(){
//方法1中用到的控件代码
var ObjStr=’<object id="Cls" classid=clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11 type=application/x-oleobject><param name="Command" value="CloseX"></object>’
if(parseInt(window.navigator.appVersion.split(";")[1].substr(5))>=6){ //如果IE版本在6.0以上,用方法4关闭窗口
self.opener=’’
self.close()
}
else{ //如果IE版本低于6.0,用方法1关闭窗口
//如果控件对象不存在,插入控件代码
if(!document.getElementById("Cls"))
document.body.insertAdjacentHTML("BeforeEnd",ObjStr)
Cls.Click()
}
}
</script>
<button onClick="closeit()">关闭窗口</button>
技巧:HHC控件代码中的CloseX 可以改为 Close后加任意字母。
特别说明
本例通过判断客户端的IE浏览器版本而用不同的代码关闭窗口,以达到兼容的目的。
1. window.navigator.appVersion获取浏览器运行的平台和版本。
2. String.substr(开始位置 [,要截取的字符长度]) 返回一个从指定位置开始的指定长度的子字符串。
3. document.getElementById("ID属性值") 获取对 ID 标签属性为指定值的第一个对象的引用。
4. insertAdjacentHTML("HTML 文本",位置) 在指定位置的元素中插入给定的 HTML 文本。
相关问题
如何让引导页在打开无边窗口后无提示关闭
一般引导页打开无边窗口的方法都是通过在onload 中触发打开无边窗口的函数,所以只需要把上面的无提示关闭窗口的方法附加上 onload 事件后就可以了。