zoukankan      html  css  js  c++  java
  • 在ModalDialog中操作父窗口对象

    1、不能使用window.parent

    Window.parent是用来在frame中进行操作的,在对话框中不能用来操作父窗口对象

     

    2、正确的做法

     

    调用modaldialog时通过传参数的方式操作

    例:

    需求

    父窗口页面为a.html 子窗口页面为b.htmla.html中有文本框idtest1,在打开的对话框中点击按钮,将a.html的文本框值改为“子窗口值”。

    实现

    打开对话框时把test1作为参数传给子窗口,在子窗口中获取参数,将参数对象(即a.html中传过来的text对象)的value属性值设置为“子窗口值”

    注意:这里只能传id,不能传name

     

    a.html代码如下

    <html>

    <head>

    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">

    <title>a.html</title>

    </head>

    <body>

    <input type=text id=test1 value=''>

    <input type=button value=" OK " onclick='window.showModalDialog("b.html", test1)'>

    </body>

    </html>

     

    b.html代码如下

     

    <html>

    <head>

    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">

    <title>b.html</title>

    <script language=javascript>

    function func1(){

    //获取父窗口传过来的参数

    var ptextid = window.dialogArguments;

    if(ptextid != undefined){

    //将父窗口传过来的对象的值改为“子窗口值”

    ptextid.value = "子窗口值";

    //关闭子窗口

    window.close();

    }

    }

    </script>

    </head>

    <body>

    <input type=button value=" OK " onclick=func1()>

    </body>

    </html>

     

     

    如果需要操作的父窗口对象比较多,也可以将window或window.document作为参数传给子窗口。

    例:

    需求

    a.html中添加id为“aform”的的formform中有idtest2的文本框,在b.html中,除了进行上面的操作之外,还要将test2的值改为“子窗口值2”,并将form提交到c.html

    实现1

    a.html中打开对话框的函数改为如下方式:

    window.showModalDialog("b.html", window.document);

     

    b.htmlfunc1()改为如下:

     

    function func1(){

    var pdoc = window.dialogArguments;

    if(pdoc!=undefined){

    pdoc.all.test1.value="子窗口值";

    pdoc.all.test2.value="子窗口值2";

    pdoc.all.aform.action="c.html";

    pdoc.all.aform.submit();

    }

    }

     

     

    实现2

    因为在子窗口中对父窗口进行的操作比较多,也可以采用execScript的方式实现。

     

    a.html中打开对话框的函数改为如下方式:

    window.showModalDialog("b.html", window);

     

    添加javascript函数如下

    function func(){

    test1.value="子窗口值";

    document.all.test2.value="子窗口值2";

    aform.action="c.html";

    aform.submit();

    }

     

    b.htmlfunc1()改为如下:

     

    function func1(){

    var pwin = window.dialogArguments;

    if(pwin!=undefined){

    var codeStr = "func();"

    pwin.execScript(codeStr,"javascript");

    window.close();

    }

    }

  • 相关阅读:
    idea 找不到包或找不到符号
    JOISC部分题解
    欧拉数学习笔记
    [清华集训2017]生成树计数
    [ZJOI2019]开关
    【题解】CF817E Choosing The Commander
    CSP-S 2020游记
    【学习笔记】线段树合并
    【题解】[IOI2005]Riv 河流
    【题解】哈希冲突
  • 原文地址:https://www.cnblogs.com/jackljf/p/3589167.html
Copyright © 2011-2022 走看看