| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 675 人关注过本帖
标题:[求助][★急★]一个关于对话框的问题,谢谢
只看楼主 加入收藏
Itgoldencoll
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2006-11-30
收藏
 问题点数:0 回复次数:8 
[求助][★急★]一个关于对话框的问题,谢谢

共有3个asp文件,dia1.asp是起始母窗体,dia2.asp是第一层窗体,dia3.asp是第二层窗体。
因为每一层都要有值返回给opener,直到最后把值返给母窗体。所以,采用showModalDialog是最好的。

但是,用户希望,在第一层窗体调第二层窗体的时候,第一层窗体关掉或不显示(总之,不希望被看见)
(因为要把第二层窗体的值一层层地返给母窗体,所以个人认为第一层窗体不能关掉,只能移走或不显示出来)

如何移走啊?moveTo(),moveBy()都试过了,不好使。能让它不显示也成啊,不知道怎么实现。
各位高人有何其他良策阿?(必须使用showModalDialog,用woindow.open倒是可以,但没法返回值啊)

dia.asp如下:
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=x-sjis">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="-1">
<TITLE></TITLE>
<SCRIPT TYPE="text/JavaScript">
function fnOnLoad()
{
var winHeigth= 740;
var winWidth = 1024;
var ret=showModalDialog("dia2.asp", null, "dialogheight:" + winHeigth + "px; dialogwidth:" + winWidth + "px; dialogtop:0px; dialogleft:0px; resizable:no; status:no; scroll:no; help:no; dialoghide=no;");
window.opener="dummy";
window.close();
return;
}
</script>
</HEAD>
<BODY BGCOLOR="#529488" onLoad="fnOnLoad();" onContextmenu="return (false);">
</BODY>
</HTML>

dia2.asp如下:
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=x-sjis">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="-1">
<TITLE></TITLE>
<SCRIPT TYPE="text/JavaScript">
function fnKakutei()
{
var winHeigth= 500;
var winWidth = 700;
var ret=showModalDialog("dia3.asp", null, "dialogheight:" + winHeigth + "px; dialogwidth:" + winWidth + "px; dialogtop:0px; dialogleft:0px; resizable:no; status:no; scroll:no; help:no; dialoghide=no;");
window.opener="dummy";
window.close();
return;
}
</script>
</HEAD>
<base target="_self">
<BODY BGCOLOR="#529488">
<FORM method="post" name="form1" onSubmit="return (false);" >
<INPUT TYPE="button" NAME="btnCommit" VALUE="確定" onClick="fnKakutei();">
</FORM>
</BODY>
</HTML>

dia3.asp如下:
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=x-sjis">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="-1">
<TITLE></TITLE>
<SCRIPT TYPE="text/JavaScript">
function fnonload()
{
window.opener.close(); //在这儿好像根本取不到window.opener对象,不知为什么?又何方法可以取到?
return;
}
</script>
</HEAD>
<base target="_self">
<BODY BGCOLOR="#529488" onLoad="fnonload();" >
</BODY>
</HTML>

搜索更多相关主题的帖子: 对话框 
2006-12-07 11:47
Itgoldencoll
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2006-11-30
收藏
得分:0 
ggjjddmm们帮帮忙好么?
2006-12-07 15:30
在编程中沦落
Rank: 2
等 级:新手上路
威 望:4
帖 子:411
专家分:0
注 册:2005-12-25
收藏
得分:0 
不明白你表述的东西…………

2006-12-07 15:32
Itgoldencoll
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2006-11-30
收藏
得分:0 
第一个页面是启动页面。启动后,自动呼出第二个页面(用showmodeldialog),按第二个页面的[确定]按钮,呼出第三个画面(用showmodeldialog),同时关闭第二个页面。

怎么实现第三个画面生成之前自动关闭第二个页面?

[此贴子已经被作者于2006-12-7 16:42:49编辑过]

2006-12-07 15:51
yms123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
收藏
得分:0 
以下是引用Itgoldencoll在2006-12-7 15:51:07的发言:
第一个页面是启动页面。启动后,自动呼出第二个页面(用showmodeldialog),按第二个页面的[确定]按钮,呼出第三个画面(用showmodeldialog),同时关闭第二个页面。

怎么实现第三个画面生成之前自动关闭第二个页面?

如果是ASP的话这种情况,可以通过URL传递或者Session来实现。
在提交时关掉第一个窗体,第二个窗体可以加入一个Session。这样再打开第一个窗体时读取Session的值。

2006-12-07 18:06
tang688
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:1219
专家分:35
注 册:2004-12-25
收藏
得分:0 
在第二层点出第三层的按钮中使用JS中的
onClick="closeme()"



function closeme()
{
window.open(第三层的URL);
window.close();
}

2006-12-07 18:29
Itgoldencoll
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2006-11-30
收藏
得分:0 
谢谢yms123

因为是将c++的程序移植成asp,所以,不允许使用session,session有timeout问题。

到现在,已经不能考虑url传值来实现了。这样改的话,改动会很大,影响现有其他功能。

[此贴子已经被作者于2006-12-7 19:10:02编辑过]

2006-12-07 18:58
Itgoldencoll
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2006-11-30
收藏
得分:0 
谢谢,tang688
window.open(第三层的URL);
window.close();
确实可以,但是,没办法将在第三个画面取到的值返给第一个画面。
为了实现返值,只能用showmodeldialog方法。window.open恐怕不行。
2006-12-07 19:02
lq7350684
Rank: 6Rank: 6
等 级:贵宾
威 望:20
帖 子:5089
专家分:98
注 册:2006-11-6
收藏
得分:0 
下面是一个关于弹出窗口的资料,是我整理的,你自己从里面找你需要的吧.



【延时转向一个网址】:
<body onload={setTimeout("location='http://xx0123.com';",5000)}>
 

 

首先建立一个空文档xx0123.html,在页面上加上如下代码即可:
<script language=javascript src=http://www.xx0123.com/mu/js/xjy/jiaodianphoto.js></script>
当然这个可以按各个站长自己的实际情况来添加啦!下面才是我们的主体:


【最简单弹出窗口代码】

弹窗代码如下,结合自身网站进行修改:
<SCRIPT LANGUAGE='javascript'>
window.open('xx0123.html')
</SCRIPT>

因为着是一段javascripts代码,所以它们应该放<SCRIPT LANGUAGE='javascript'>标签和</script>之间。window.open ('xx0123.html') 用于控制弹出新的窗口xx0123.html,如果xx0123.html不与主窗口在同一路径下,前面应写明路径,绝对路径(http://)和相对路径(../)均可。用单引号和双引号都可以,只是不要混用。这一段代码可以加入HTML的任意位置,<head>和</head>之间可以,<body>间</body>也可以,越前越早执行,尤其是页面代码长,又想使页面早点弹出就尽量往前放。


【经过设置后的弹出窗口】

下面再说一说弹出窗口的设置。只要再往上面的代码中加一点东西就可以了。
我们来定制这个弹出的窗口的外观,尺寸大小,弹出的位置以适应该页面的具体情况。
<SCRIPT LANGUAGE='javascript'>
window.open ('xx0123.html', 'newwindow', 'height=300, width=300, top=0,left=0, toolbar=no, menubar=no, scrollbars=no, resizable=no,location=no, status=no')
</SCRIPT>

参数解释:
window.open 弹出新窗口的命令;
'xx0123.html' 弹出窗口的文件名;
'newwindow' 弹出窗口的名字(不是文件名),非必须,可用空''代替;
height=300 窗口高度;
width=300 窗口宽度;
top=0 窗口距离屏幕上方的象素值;
left=0 窗口距离屏幕左侧的象素值;
toolbar=no 是否显示工具栏,yes为显示;
menubar 表示菜单栏
scrollbars 表示滚动栏
resizable=no 是否允许改变窗口大小,yes为允许;
location=no 是否显示地址栏,yes为允许;
status=no 是否显示状态栏内的信息(通常是文件已经打开),yes为允许;



【用函数控制弹出窗口】

下面是一个完整的代码。
<html>
<head>
<script LANGUAGE='javascript'>
function openwin()
{ window.open ('xx0123.html', 'newwindow', 'height=100, width=400, toolbar=
no, menubar=no, scrollbars=no, resizable=no, location=no, status=no') }
</script>
</head>
<body onload='openwin()'>
...页面内容...
</body>
</html>

这里定义了一个函数openwin(),函数内容就是打开一个窗口。在调用它之前没有任何用途。
怎么调用呢?
方法一:<body onload='openwin()'> 浏览器读页面时弹出窗口;
方法二:<body onunload='openwin()'> 浏览器离开页面时弹出窗口;
方法三:用一个连接调用:
<a href='#' onclick='openwin()'>打开一个窗口</a>
注意:使用的“#”是虚连接。
方法四:用一个按钮调用:
<input type='button' onclick='openwin()' value='打开窗口'>

【同时弹出2个窗口】

对源代码稍微改动一下:
<script LANGUAGE='javascript'>
function openwin()
{ window.open ('xx0123.html', 'newwindow', 'height=100, width=100, top=0,left=0,toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, status=no');window.open ('xx0123page2.html', 'newwindow2', 'height=100, width=100, top=100, left=100,toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, status=no')
}
</script>

为避免弹出的2个窗口覆盖,用top和left控制一下弹出的位置不要相互覆盖即可。最后用上面说过的四种方法调用即可。
注意:2个窗口的name(newwindows和newwindow2)不要相同,或者干脆全部为空。OK?


【主窗口打开文件1.htm,同时弹出小窗口xx0123.html】

如下代码加入主窗口<head>区:
<script language='javascript'>

function openwin()
{window.open('xx0123.html','','width=200,height=200')
}
</script>
加入<body>区:
<a href='1.htm' onclick='openwin()'>open</a>即可。

【弹出的窗口之定时关闭控制】

下面我们再对弹出的窗口进行一些控制,效果就更好了。如果我们再将一小段代码加入弹出的页面(注意是加入到xx0123.html的HTML中,可不是主页面中,否则...),让它10秒后自动关闭是不是更酷了?

首先,将如下代码加入xx0123.html文件的<head>区:
<script language='javascript'>
function closeit()
{setTimeout('self.close()',10000) file://毫秒}
</script>

然后,再用<body onload='closeit()'> 这一句话代替xx0123.html中原有的<BODY>这一句就可以了。(这一句话千万不要忘记写啊!这一句的作用是调用关闭窗口的代码,10秒钟后就自行关闭该窗口。)

【在弹出窗口中加上一个关闭按钮】

<FORM>
<INPUT TYPE='BUTTON' value='关闭' onClick='window.close()'>
</FORM>
呵呵,现在更加完美了!


【内包含的弹出窗口-一个页面两个窗口】

上面的例子都包含两个窗口,一个是主窗口,另一个是弹出的小窗口。

通过下面的例子,你可以在一个页面内完成上面的效果。
<html>
<head>
<SCRIPT LANGUAGE='javascript'>
function openwin()
{OpenWindow=window.open('', 'newwin', 'height=250, width=250,toolbar=no,scrollbars='+scroll+',menubar=no');
OpenWindow.document.write('<TITLE>例子</TITLE>')
OpenWindow.document.write('<BODY BGCOLOR=#ffffff>')
OpenWindow.document.write('<h1>Hello!</h1>')
OpenWindow.document.write('New window opened!')
OpenWindow.document.write('</BODY>')
OpenWindow.document.write('</HTML>')
OpenWindow.document.close()}
</SCRIPT>
</head>
<body>
<a href='#' onclick='openwin()'>打开一个窗口</a>
<input type='button' onclick='openwin()' value='打开窗口'>
</body>
</html>


看看 OpenWindow.document.write()里面的代码不就是标准的HTML吗?只要按照格式写更多的行即可。千万注意多一个标签或少一个标签就会出现错误。记得用OpenWindow.document.close()结束啊。

【弹出的窗口之背后弹出】

<body onload={window.open('http://xx0123.com','','height=300,width=500,scrollbars=yes,location=yes,resizable=yes,left=0,top=0');window.focus();}>

我们在原有的代码后面加上一句:window.focus(); 这样在窗口刚被弹出,当前窗口就马上被激活,眼前一闪,呵!弹窗跑到背面去了!

【弹出的窗口之延时】

<body onload={setTimeout('window.open(''http://xx0123.com','','height=300,width=300,scrollbars=yes,location=yes,resizable=yes,left=0,top=300')',10000) file://毫秒}>

【弹出的窗口之Cookie控制】

回想一下,上面的弹出窗口虽然酷,但是有一点小毛病(沉浸在喜悦之中,一定没有发现吧?)比如你将上面的脚本放在一个需要频繁经过的页面里(例如首页),那么每次刷新这个页面,窗口都会弹出一次,是不是非常烦人?:-(有解决的办法吗?Yes! ;-) Follow me. 我们使用cookie来控制一下就可以了。

首先,将如下代码加入主页面HTML的<HEAD>区:
<script>
function openwin()
{window.open('xx0123.html','','width=200,height=200')}
function get_cookie(Name)
{var search = Name + '='
var returnvalue = '';
if (document.cookie.length > 0) {
offset = document.cookie.indexOf(search)
if (offset != -1) {
offset += search.length
end = document.cookie.indexOf(';', offset);
if (end == -1)
end = document.cookie.length;
returnvalue=unescape(document.cookie.substring(offset,end))
}
}
return returnvalue;
}
function loadpopup(){
if (get_cookie('popped')==''){
openwin()
document.cookie='popped=yes'
}
}
</script>

然后,用<body onload='loadpopup()'>(注意不是openwin而是loadpop啊!)替换主页面中原有的<BODY>这一句即可。你可以试着刷新一下这个页面或重新进入该页面,窗口再也不会弹出了。
2006-12-09 11:22
快速回复:[求助][★急★]一个关于对话框的问题,谢谢
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031152 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved