=============================
menu.aspx
function page_load()
{
// open_bbs();
// timeout1=window.setInterval("open_bbs();",30000);
alert('ok111');
window.top.open('BBS_index.aspx','_blank','Width=700px;Height=1400px;status=no;help=no;toolbar=no');
alert('ok222');
}
</script>
</head>
<body leftmargin="0" topmargin="0" onload="page_load();">
=====================================
mian.aspx<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<frameset border="0" frameborder="0" framespacing="0" rows="58px,*">
<frame name=frmTop src="menu.aspx" noResize="noResize" scrolling="no" >
<frame name=frmBody src= "about:blank"><noframes><p>本页面使用了框架,但您的浏览器不支持框架</p></noframes>
</frameset>
</html>
近段时间一直被一件烦恼事情困扰,因为是我编好的聊天室程序重装系统后运行就不成功了。问题是这样的,我需要在用户关闭聊天窗口时执行页面exit.asp的ASP程序来从在线用户里删除该用户。当用户关闭聊天窗口(包含几个框架Frame)时,会产生一个onbeforeunload事件,我通过该事件来调用一段JavaScript函数,该函数使用window.open来打开exit.asp文件。刚开始时一切运行正常,但是由于我的电脑崩溃重装系统,重新运行时就出现问题了,当我关闭聊天窗口时,并没有打开窗口执行exit.asp文件。
原来的相关代码如下:
<script language=javascript>
function exit() /*退出之前执行exit.asp退出处理页面*/
{
window.open("exit.asp");
}
</script>
//下面是框架frame的开始代码
<frameset rows="*" cols="*,155" framespacing="0" frameborder="0" border="false" onbeforeunload="exit();">
我开始以为是关闭事件没有检测到,但经过测试发现关闭事件是正常的。后来估计是我重装系统后,系统由Windows2000 升级为Windows2003,现在的IE浏览器禁止弹出窗口,所以window.open失效,后来改为window.opener.location.href就正常了。修改后的相关代码如下:
<script language=javascript>
function exit() /*退出之前执行exit.asp退出处理页面*/
{
window.opener.location.href='exit.asp';
}
</script>
//下面是框架frame的开始代码
<frameset rows="*" cols="*,155" framespacing="0" frameborder="0" border="false" onbeforeunload="exit();">
总结,如果浏览器禁止弹出新窗口,比如WindowsXP或Windows2003的浏览器就这样,那么最好使用window.opener.location.href来调用另一个窗口。如果大家有更好的方法请分享。