zoukankan      html  css  js  c++  java
  • window.showModalDialog和window.open关闭子页面时刷新父页面【转】

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

    父窗体打开页面的javascript

    function GoToPage(id)
         {
               
    var title="title";
               
    var url="xxxxx.aspx?ID="+id+"&Radom="+Math.random();;
               
    var Width="700";
               
    var Height="600";
               
    var arguemnts = new Object();
               arguemnts.window = window;
                if (document.all&&window.print)
                {
                    window.showModalDialog(url,arguemnts,
    "dialogWidth:" + Width + "px;dialogHeight:" + Height + "px;center:yes;status:no;scroll:yes;help:no;");
                    //或者window.showModelessDialog

                   //模态窗口在关闭后可以直接在后面跟上刷新的语句

                   window.location.reload();
                }
                
    else 
               { 
                    window.open(url,
    "","width=" + Width + "px,height=" + Height + "px,resizable=1,scrollbars=1"); 
               }
            }

    在 window.open打开的窗口中,关闭子窗口并刷新父窗口

    window.opener.location.reload();window.opener=null;window.close();

    在window.showModalDialog打开窗口中,关闭子窗口并刷新父窗口

    window.dialogArguments.window.location = window.dialogArguments.window.location; self.close();

     

     

    (一)showModalDialog使用例子,父窗口向子窗口传递值,子窗口设置父窗口的值,子窗口关闭的时候返回值到父窗口.

    farther.html
    ---------------------------

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
        
    <HEAD>
            
    <TITLE>New Document </TITLE>
            
    <META content="EditPlus" name="Generator">
            
    <META content="" name="Author">
            
    <META content="" name="Keywords">
            
    <META content="" name="Description">
            
    <script language="javascript"> 
            
    <!-- 
            
    function openChild(){
            
    var k = window.showModalDialog("child.html",window,"dialogWidth:335px;status:no;dialogHeight:300px"); 
            
    if(k != null
            document.getElementById(
    "txt11").value = k; 
            } 
            
    //--> 
            </script>
        
    </HEAD>
        
    <BODY>
            
    <FONT face="宋体"></FONT>
            
    <br>
            传递到父窗口的值:
    <input id="txt9" type="text" value="3333333333333" name="txt9"><br>
            返回的值:
    <input id="txt11" type="text" name="txt11"><br>
            子窗口设置的值:
    <input id="txt10" type="text" name="txt10"><br>
            
    <input id="Button1" onclick="openChild()" type="button" value="openChild" name="Button1">
        
    </BODY>
    </HTML>


    child.html
    ---------------------------

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
        
    <HEAD>
            
    <TITLE>New Document </TITLE>
            
    <META content="EditPlus" name="Generator">
            
    <META content="" name="Author">
            
    <META content="" name="Keywords">
            
    <META content="" name="Description">
            
    <meta http-equiv="Expires" content="0">
            
    <meta http-equiv="Cache-Control" content="no-cache">
            
    <meta http-equiv="Pragma" content="no-cache">
        
    </HEAD>
        
    <BODY>
            
    <FONT face="宋体"></FONT>
            
    <br>
            父窗口传递来的值:
    <input id="txt0" type="text" name="txt0"><br>
            输入要设置父窗口的值:
    <input id="txt1" type="text" name="txt1"><input id="Button1" onclick="setFather()" type="button" value="设置父窗口的值" name="Button1"><br>
            输入返回的值:
    <input id="txt2" type="text" name="txt2"><input id="Button2" onclick="retrunValue()" type="button" value="关闭切返回值" name="Button2">
            
    <input id="Button3" onclick="" type="button" value="关闭刷新父窗口" name="Button3">
            
    <script language="javascript"> 
            
    <!-- 
            
    var k=window.dialogArguments; 
            
    //获得父窗口传递来的值 
            if(k!=null
            { 
            document.getElementById(
    "txt0").value = k.document.getElementById("txt9").value; 
            } 
            
    //设置父窗口的值 
            function setFather() 
            { 
            k.document.getElementById(
    "txt10").value = document.getElementById("txt1").value 
            } 
            
    //设置返回到父窗口的值 
            function retrunValue() 
            { 
            
    var s = document.getElementById("txt2").value; 
            window.returnValue
    =s; 
            window.close(); 
            } 
            
    //--> 
            </script>
        
    </BODY>
    </HTML>


    ----------------------------
    说明:
    由于showModalDialog缓存严重,下面是在子窗口取消客户端缓存的设置.也可以在服务器端取消缓存,参考:
    http://adandelion.cnblogs.com/articles/252137.html
    <meta http-equiv="Expires" CONTENT="0">
    <meta http-equiv="Cache-Control" CONTENT="no-cache">
    <meta http-equiv="Pragma" CONTENT="no-cache">



    (二)下面是关闭刷新父窗口的例子

    farther.html
    ---------------------------

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
        
    <HEAD>
            
    <TITLE>New Document </TITLE>
            
    <META NAME="Generator" CONTENT="EditPlus">
            
    <META NAME="Author" CONTENT="">
            
    <META NAME="Keywords" CONTENT="">
            
    <META NAME="Description" CONTENT="">
            
    <script language="javascript"> 
            
    <!-- 
            
    function openChild() 
            { 

            
    var k = window.showModalDialog("child.html",window,"dialogWidth:335px;status:no;dialogHeight:300px"); 
            
    if(k == 1)//判断是否刷新 
            { 
            alert('刷新'); 
            window.location.reload(); 
            } 
            } 
            
    //--> 
            </script>
        
    </HEAD>
        
    <BODY>
            
    <br>
            传递到父窗口的值:
    <input id="txt9" type="text" value="3333333333333" NAME="txt9"><br>
            
    <input type="button" value="openChild" onclick="openChild()" ID="Button1" NAME="Button1">
        
    </BODY>
    </HTML>


    child.html
    ----------------------

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
        
    <HEAD>
            
    <TITLE>New Document </TITLE>
            
    <META content="EditPlus" name="Generator">
            
    <META content="" name="Author">
            
    <META content="" name="Keywords">
            
    <META content="" name="Description">
            
    <meta http-equiv="Expires" content="0">
            
    <meta http-equiv="Cache-Control" content="no-cache">
            
    <meta http-equiv="Pragma" content="no-cache">
        
    </HEAD>
        
    <BODY>
            
    <FONT face="宋体"></FONT>
            
    <br>
            父窗口传递来的值:
    <input id="txt0" type="text" name="txt0"><br>
            
    <input id="Button1" onclick="winClose(1)" type="button" value="关闭刷新父窗口" name="Button1">
            
    <input id="Button2" onclick="winClose(0)" type="button" value="关闭不刷新父窗口" name="Button2">
            
    <script language="javascript"> 
            
    <!-- 
            
    var k=window.dialogArguments; 
            
    //获得父窗口传递来的值 
            if(k!=null
            { 
            document.getElementById(
    "txt0").value = k.document.getElementById("txt9").value; 
            } 

            
    //关闭窗口返回是否刷新的参数. 
            function winClose(isRefrash) 
            { 
            window.returnValue
    =isRefrash; 
            window.close(); 
            } 
            
    //--> 
            </script>
        
    </BODY>
    </HTML>

    --------------------------
    说明
    1.下面是取消客户端缓存的:
    <meta http-equiv="Expires" CONTENT="0">
    <meta http-equiv="Cache-Control" CONTENT="no-cache">
    <meta http-equiv="Pragma" CONTENT="no-cache">
    也可以在服务器端取消缓存,参考:
    http://adandelion.cnblogs.com/articles/252137.html

    2.向父窗口传递阐述在ASP.NET中也可以是用aaa.aspx?id=1的方式传递.

    3.不刷新父窗口的话在父窗口中直接这样一来设置可以.
    <script>
    window.showModalDialog("child.html",window,"dialogWidth:335px;status:no;dialogHeight:300px");
    </script>
    4.在子窗口中若要提交页面的话要加入:,这样就不会打开新窗口了.
    <head>
    <base target="_self">
    </HEAD>

     

     

  • 相关阅读:
    .NET Interop 工具集
    关于正弦波的算法
    Windows Phone 系列 本地数据存储
    Xaml cannot create an instance of “X”
    Windows Phone 系列 使用 MVVM绑定时无法获取当前值
    Windows Phone 系列 应用程序图标无法显示
    Windows Phone 系列 WPConnect无法上网的问题
    Windows Phone 系列 使用 Windows Phone 保存铃声任务
    WP7.5提交应用
    Windows Phone 系列 动态删除ObservableCollection
  • 原文地址:https://www.cnblogs.com/myssh/p/1390920.html
Copyright © 2011-2022 走看看