我现在做了一个加载时候就可以弹出showModelessDialog的父窗体页面,但是在此父窗体页面上又有一个button点击后还是要弹出这个showModelessDialog页面,这样就弹出了两个 我怎么控制每一次点击只弹出一个呢?我想的是父窗体获取showModelessDialog页面的关闭事件 然后在点击button弹出新的窗口以前 先关闭原来的 但是不知道可以不可以 也不知怎么实现 求帮助 在线等ing 

解决方案 »

  1.   

    补充问题:我做了这个页面解释一下这个页面:
    当页面加载完成后,同时加载了showModelessDialog页面,其textbox值为1。点击在父窗体上的button,要实现将showModelessDialog页面上的textbox值变为0。这个值就是通过showModelessDialog传过去的参数。要怎么做呢?我做了一个比较笨的方法,就是在点击button的时候又调用一遍加载showModelessDialog页面方法,可这样showModelessDialog页面就变成两个了,怎么控制只有一个呢?
    源码奉上:
    父窗体:
    <body onload="initpage()">
        <input id="Button1" type="button" value="button"  onclick="ClkBtn()"/>
        <script type="text/javascript" language="javascript">
            function initpage() {
                onLoadSmallCmr(0);
            }
            function onLoadSmallCmr(cmrShow) {
                    var iTop = (window.screen.availHeight - 450) / 2 + 22;
                    var iLeft = (window.screen.availWidth - 300) / 2 - 52;
                    window.showModelessDialog("SideStream.htm",  cmrShow, "dialogHeight=300px;dialogWidth=300px;top=" + iTop + ";left=" + iLeft + ";toolbar =no;menubar=no;scroll=no;resizable=yes;location=no;status=no");
            }        function ClkBtn() {
               onLoadSmallCmr(1);
            }
        </script>
    </body>
    子窗体:SideStream.htm
    <body onload="recValue()"> 
        <input id="Text1" type="text" /><br />
        <input id="Button1" type="button" value="button" onclick="retValue()" />
        <script type="text/javascript" language="javascript">
            function recValue() {
                var recValue = window.dialogArguments;
                document.getElementById("Text1").value = recValue;
            }        function retValue() {
                window.close();
            }
        </script>
    </body>
      

  2.   

    恩,是我理解错了
    我在网上查了资料,真是不怎么全,都是ModalDialog的,ModelessDialog资料确实很少
    本着送佛送到西的原则,研究了一下,写了完整的sample,你试试吧<HTML>
    <HEAD>
    <TITLE>showModelessDialogEX.htm</TITLE>
    <SCRIPT>
    var sUserName="";
    var intval = null;
    var m = null;
    function fnCallDialog(){
    if(m)
    {
    }else{
    m = showModelessDialog("myDialog.html",window,"status:false;dialogWidth:300px;dialogHeight:300px");
    }
    if(!intval){
    intval = setInterval(function(){
    if(m && m.closed)
    m = null;
    }, 500);
    }
    }
    function fnUpdate(){
        document.getElementById("oName").innerText = sUserName;
    }
    </SCRIPT></HEAD><BODY><P>Enter<SPAN STYLE="color:red;font-size:24" id="oName">JoyoShuai</SPAN></P><INPUT TYPE="button"VALUE="Display Modeless Dialog" onclick="fnCallDialog()"></BODY>
    </HTML><HTML>
    <HEAD>
    <TITLE>myDialog.htm</TITLE>
    <SCRIPT>
    function fnGetInfo() {
    var sData = dialogArguments;
    sData.sUserName = document.getElementById("oEnterName").value;
    sData.fnUpdate();
    }
    function fnCancel() {
    var sData = dialogArguments;
    sData.sUserName = "Joan";
    sData.fnUpdate();
    }
    </SCRIPT>
    </HEAD>
    <BODY>
    Enter your <SPAN STYLE="text-decoration:underline">F</SPAN>irst Name</LABEL>
    <INPUT id="oEnterName"><INPUT VALUE="Apply" TYPE=button onclick="fnGetInfo();" >
    <INPUT VALUE="Ok" TYPE=button onclick="fnGetInfo();window.close();" >
    <INPUT VALUE="Cancel" TYPE=button onclick="window.close();">
    </BODY>
    </HTML>
      

  3.   

    妈的,被网上资料误导了,用 setInterval干嘛?改一下<HTML>
    <HEAD>
    <TITLE>showModelessDialogEX.htm</TITLE>
    <SCRIPT>
    var sUserName="";
    var m = null;
    function fnCallDialog(){
    if(!m || m.closed)
    {
    m = showModelessDialog("myDialog.html",window,"status:false;dialogWidth:300px;dialogHeight:300px");
    }
    }
    function fnUpdate(){
        document.getElementById("oName").innerText = sUserName;
    }
    </SCRIPT></HEAD><BODY><P>Enter<SPAN STYLE="color:red;font-size:24" id="oName">JoyoShuai</SPAN></P><INPUT TYPE="button"VALUE="Display Modeless Dialog" onclick="fnCallDialog()"></BODY>
    </HTML><HTML>
    <HEAD>
    <TITLE>myDialog.htm</TITLE>
    <SCRIPT>
    function fnGetInfo() {
    var sData = dialogArguments;
    sData.sUserName = document.getElementById("oEnterName").value;
    sData.fnUpdate();
    }
    function fnCancel() {
    var sData = dialogArguments;
    sData.sUserName = "Joan";
    sData.fnUpdate();
    }
    </SCRIPT>
    </HEAD>
    <BODY>
    Enter your <SPAN STYLE="text-decoration:underline">F</SPAN>irst Name</LABEL>
    <INPUT id="oEnterName"><INPUT VALUE="Apply" TYPE=button onclick="fnGetInfo();" >
    <INPUT VALUE="Ok" TYPE=button onclick="fnGetInfo();window.close();" >
    <INPUT VALUE="Cancel" TYPE=button onclick="window.close();">
    </BODY>
    </HTML>
      

  4.   


    谢谢您这么细心的回答,但是您还是意错意了,我不是要触发子窗体的button传值给父窗体,我想要父窗体的button触发传值给子窗体肿么弄呢?
      

  5.   

    也就是说 当子窗体没有关闭的时候,我的父窗体通过点击button刷新子窗体。
      

  6.   

    <HTML>
    <HEAD>
    <TITLE>showModelessDialogEX.htm</TITLE>
    <SCRIPT>
    var sUserName="";
    var m = null;
    function fnCallDialog(){
    if(!m || m.closed)
    {
    m = showModelessDialog("myDialog.html",window,"status:false;dialogWidth:300px;dialogHeight:300px");
    }
    }
    function fnUpdate(){
        document.getElementById("oName").innerText = sUserName;
    }
    </SCRIPT></HEAD><BODY><P>Enter<SPAN STYLE="color:red;font-size:24" id="oName">JoyoShuai</SPAN></P><INPUT TYPE="button"VALUE="Display Modeless Dialog" onclick="fnCallDialog()">
    <INPUT TYPE="button"VALUE="Display Modeless Dialog" onclick="m.document.getElementById('linkA').click()"></BODY>
    </HTML><HTML>
    <HEAD>
    <TITLE>myDialog.htm</TITLE>
    <base target="_self"></base>
    <SCRIPT>
    function fnGetInfo() {
    var sData = dialogArguments;
    sData.sUserName = document.getElementById("oEnterName").value;
    sData.fnUpdate();
    }
    function fnCancel() {
    var sData = dialogArguments;
    sData.sUserName = "Joan";
    sData.fnUpdate();
    }
    </SCRIPT>
    </HEAD>
    <BODY>
    Enter your <SPAN STYLE="text-decoration:underline">F</SPAN>irst Name</LABEL>
    <INPUT id="oEnterName"><INPUT VALUE="Apply" TYPE=button onclick="fnGetInfo();" >
    <INPUT VALUE="Ok" TYPE=button onclick="fnGetInfo();window.close();" >
    <INPUT VALUE="Cancel" TYPE=button onclick="window.close();">
    <a id="linkA" href="http://www.baidu.com" style="display:none">baidu</a>
    </BODY>
    </HTML>
      

  7.   

    触发子窗体的控件点击造成跳转,这是一个方法还有一个方法,如果子窗口是打开状态的话,先关闭它<HTML>
    <HEAD>
    <TITLE>showModelessDialogEX.htm</TITLE>
    <SCRIPT>
    var sUserName="";
    var m = null;
    function fnCallDialog(){
    if(m && !m.closed)
    m.close();
    if(!m || m.closed)
    {
    m = showModelessDialog("myDialog.html",window,"status:false;dialogWidth:300px;dialogHeight:300px");
    }
    }
    function fnUpdate(){
        document.getElementById("oName").innerText = sUserName;
    }
    </SCRIPT></HEAD><BODY><P>Enter<SPAN STYLE="color:red;font-size:24" id="oName">JoyoShuai</SPAN></P><INPUT TYPE="button"VALUE="Display Modeless Dialog" onclick="fnCallDialog()">
    <INPUT TYPE="button"VALUE="redirect Dialog" onclick="m.document.getElementById('linkA').click()">
    <INPUT TYPE="button"VALUE="Display Modeless Dialog Again" onclick="fnCallDialog()"></BODY>
    </HTML><HTML>
    <HEAD>
    <TITLE>myDialog.htm</TITLE>
    <base target="_self"></base>
    <SCRIPT>
    function fnGetInfo() {
    var sData = dialogArguments;
    sData.sUserName = document.getElementById("oEnterName").value;
    sData.fnUpdate();
    }
    function fnCancel() {
    var sData = dialogArguments;
    sData.sUserName = "Joan";
    sData.fnUpdate();
    }
    </SCRIPT>
    </HEAD>
    <BODY>
    Enter your <SPAN STYLE="text-decoration:underline">F</SPAN>irst Name</LABEL>
    <INPUT id="oEnterName"><INPUT VALUE="Apply" TYPE=button onclick="fnGetInfo();" >
    <INPUT VALUE="Ok" TYPE=button onclick="fnGetInfo();window.close();" >
    <INPUT VALUE="Cancel" TYPE=button onclick="window.close();">
    <a id="linkA" href="http://www.baidu.com" style="display:none">baidu</a>
    </BODY>
    </HTML>
      

  8.   

    非常感谢 clark_kidd  的解答