PS:“由这个页面通过window.open打开的页面”是在.cs中通过Response.Write打开的,如:
Response.Write("<script language='javascript'>window.open('"+"abc.aspx?" +"id=" + id.ToString()+"')</script>");
12 个解决方案
#1
open有返回的.
一直拿着这个返回.
在关闭是把这个返回也关掉.
var a = window.open();
a.close();
一直拿着这个返回.
在关闭是把这个返回也关掉.
var a = window.open();
a.close();
#2
a页面是不能控制b页面的,
#3
可以先用个数组保存打开的窗口.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<script type="text/javascript">
var wins = [], n = 0;
function newWin(){
wins[n++] = window.open("http://www.baidu.com");
}
function closeWin(){
for(var i=0; i<n; i++){
wins[i].close();
wins[i] = null;
}
n = 0;
window.opener = null;
window.close();
};
/* 窗口关闭前调用
window.onbeforeunload = function(){
closeWin();
};*/
</script>
</head>
<body>
<input type="button" value=" 新建窗口 " onclick="newWin();" />
<input type="button" value=" 关闭 " onclick="closeWin();" />
</body>
</html>
#4
但是现在好像不能很好的区分刷新和关闭事件
#5
我也想到用数组,但是问题是我的页面是在.CS里面用语句打开的,具体的说的一个datagrid里面的模板列中的按钮而不是页面上的某个单独按钮。这个怎么存到html文件的js函数的数组中啊?
#6
顶起~
#7
lz,你可以先找到dataGrid里面模板列的那个按钮,给它附加事件代码,或者在后端用btnOPen.Attributes.add('onclick','OpenWindow()');之类,或者在前端用document.getElementsById('btn在前端的id’).attachEvent('onclick',OpenWindow);之类,看你自己了,最终是要用js数组来保存window的。
#8
最关键的地方是我不知道怎么写在.cs文件中把打开的window的编号还是啥的识别标志传到数组再把数组传到html的js函数里的代码=_=b。。。
哪位写两句代码具体的代码吧。。。
#9
再up。
附加:每次点击datagrid模板列的按钮页面就要刷新一次,在js中定义的变量值也没有了,我要打开几个页面的话,最后实际上只能保存最后打开那个窗口的句柄,怎么办?
附加:每次点击datagrid模板列的按钮页面就要刷新一次,在js中定义的变量值也没有了,我要打开几个页面的话,最后实际上只能保存最后打开那个窗口的句柄,怎么办?
#10
那在子页面做个定时方法.
当检测不到window.opener的时候就自己关掉吧...
当检测不到window.opener的时候就自己关掉吧...
#11
我在从A中用window.open打开的窗口B的HTML中添加了js函数
function test()
{
if(window.opener!=null)
{
alert(window.opener);
setTimeout('test()', 1000);
}
else
{window.close();}
}
可是就算我关了A,B也没有关,alert(window.opener);仍然返回[object]。是哪里写错了么?
#12
确实写错了。应该是
<script language="javascript">
<!--
window.onload=test();
function test()
{
if(opener)
{
if(opener.closed==false)
{
setTimeout('test()', 1000);
}
else{window.close();}
}
else{window.close();}
}
//-->
</script>
natineprince 的方法是目前最好的解决办法了,谢谢大家帮助。
<script language="javascript">
<!--
window.onload=test();
function test()
{
if(opener)
{
if(opener.closed==false)
{
setTimeout('test()', 1000);
}
else{window.close();}
}
else{window.close();}
}
//-->
</script>
natineprince 的方法是目前最好的解决办法了,谢谢大家帮助。
#1
open有返回的.
一直拿着这个返回.
在关闭是把这个返回也关掉.
var a = window.open();
a.close();
一直拿着这个返回.
在关闭是把这个返回也关掉.
var a = window.open();
a.close();
#2
a页面是不能控制b页面的,
#3
可以先用个数组保存打开的窗口.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<script type="text/javascript">
var wins = [], n = 0;
function newWin(){
wins[n++] = window.open("http://www.baidu.com");
}
function closeWin(){
for(var i=0; i<n; i++){
wins[i].close();
wins[i] = null;
}
n = 0;
window.opener = null;
window.close();
};
/* 窗口关闭前调用
window.onbeforeunload = function(){
closeWin();
};*/
</script>
</head>
<body>
<input type="button" value=" 新建窗口 " onclick="newWin();" />
<input type="button" value=" 关闭 " onclick="closeWin();" />
</body>
</html>
#4
但是现在好像不能很好的区分刷新和关闭事件
#5
我也想到用数组,但是问题是我的页面是在.CS里面用语句打开的,具体的说的一个datagrid里面的模板列中的按钮而不是页面上的某个单独按钮。这个怎么存到html文件的js函数的数组中啊?
#6
顶起~
#7
lz,你可以先找到dataGrid里面模板列的那个按钮,给它附加事件代码,或者在后端用btnOPen.Attributes.add('onclick','OpenWindow()');之类,或者在前端用document.getElementsById('btn在前端的id’).attachEvent('onclick',OpenWindow);之类,看你自己了,最终是要用js数组来保存window的。
#8
最关键的地方是我不知道怎么写在.cs文件中把打开的window的编号还是啥的识别标志传到数组再把数组传到html的js函数里的代码=_=b。。。
哪位写两句代码具体的代码吧。。。
#9
再up。
附加:每次点击datagrid模板列的按钮页面就要刷新一次,在js中定义的变量值也没有了,我要打开几个页面的话,最后实际上只能保存最后打开那个窗口的句柄,怎么办?
附加:每次点击datagrid模板列的按钮页面就要刷新一次,在js中定义的变量值也没有了,我要打开几个页面的话,最后实际上只能保存最后打开那个窗口的句柄,怎么办?
#10
那在子页面做个定时方法.
当检测不到window.opener的时候就自己关掉吧...
当检测不到window.opener的时候就自己关掉吧...
#11
我在从A中用window.open打开的窗口B的HTML中添加了js函数
function test()
{
if(window.opener!=null)
{
alert(window.opener);
setTimeout('test()', 1000);
}
else
{window.close();}
}
可是就算我关了A,B也没有关,alert(window.opener);仍然返回[object]。是哪里写错了么?
#12
确实写错了。应该是
<script language="javascript">
<!--
window.onload=test();
function test()
{
if(opener)
{
if(opener.closed==false)
{
setTimeout('test()', 1000);
}
else{window.close();}
}
else{window.close();}
}
//-->
</script>
natineprince 的方法是目前最好的解决办法了,谢谢大家帮助。
<script language="javascript">
<!--
window.onload=test();
function test()
{
if(opener)
{
if(opener.closed==false)
{
setTimeout('test()', 1000);
}
else{window.close();}
}
else{window.close();}
}
//-->
</script>
natineprince 的方法是目前最好的解决办法了,谢谢大家帮助。