我写了两个网页opener.html和newwin.html,opener.html为父窗口,包含一个text文本框(初始值为beijing)和一个new window按钮,点击new window按钮可打开子窗口newwin.html,子窗口包含一个空白text文本框和一个get opener text按钮,点击按钮可让子窗口text文本框获取父窗口的text文本框内容。子窗口还有一个city下拉框,city改变触发onChange事件让父窗口text文本框获得city选项。
    问题是:1、点击子窗口按钮后子窗口text没能获得父窗口text内容
            2、city选项改变后父窗口text没能获得city内容
   子窗口中两个函数都用到了window.opener.document来取得或改变父窗口text内容,我怀疑是window.opener.document没起到作用。有人能给解答一下吗?代码如下:<!DOCTYPE html>
<html>
  <head>
    <title>opener.html</title>

    <meta name="keywords" content="keyword1,keyword2,keyword3">
    <meta name="description" content="this is my page">
    <meta name="content-type" content="text/html; charset=GB18030">
    
    <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
    <script language="javascript">
        function newWin(){
            window.open("newwin.html","new window","width=200,height=150,scrollbars=yes,resizable=no");
        }
    </script>
  </head>
  
  <body>
    <form action="" name="openerform">
        <input type="text" name="openertext" value="beijing">
        <input type="button" value="New window" onClick="newWin()">
    </form>
  </body>
</html><!DOCTYPE html>
<html>
  <head>
    <title>newwin.html</title>

    <meta name="keywords" content="keyword1,keyword2,keyword3">
    <meta name="description" content="this is my page">
    <meta name="content-type" content="text/html; charset=GB18030">
    
    <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
    <script language="javascript">
        function getOpenerText(){
            return opener.document.openerform.openertext.value;
        }
    
        function returnCity(){
           var city=document.sonform.city.value;
            opener.document.openerform.openertext.value=city;
        }
    </script>
  </head>
  
  <body>
    
      <form action="",name="sonform">
           <input type="text" name="sontext" value="">
           <input type="button" value="get opener text" onClick="getOpenerText"><br>
           <select name="city" onChange="returnCity()">
              <option value="Shanghai">Shanghai</option>
              <option value="Shenzhen">Shenzhen</option>
        </select>
      </form>
    
  </body>
</html>

解决方案 »

  1.   

    <form action="",name="sonform">  逗号取去掉 
               <input type="text" name="sontext" value="">
               <input type="button" value="get opener text" onClick="getOpenerText()"><br>加上括号
               <select name="city" onChange="returnCity()">
                  <option value="Shanghai">Shanghai</option>
                  <option value="Shenzhen">Shenzhen</option>
            </select>
          </form>
      

  2.   


    去掉了,没用。你试试
    两个页面没有跨域吧,跨域肯定是不行的
    看下这两个alert能不能正确     function returnCity(){
               var city=document.sonform.city.value;
                alert(city) ;
                alert( opener.document.openerform.openertext.value ) ;
                opener.document.openerform.openertext.value=city;
            }
      

  3.   


    去掉了,没用。你试试
    两个页面没有跨域吧,跨域肯定是不行的
    看下这两个alert能不能正确     function returnCity(){
               var city=document.sonform.city.value;
                alert(city) ;
                alert( opener.document.openerform.openertext.value ) ;
                opener.document.openerform.openertext.value=city;
            }
    alert(city)正确弹出,alert(opener...)没有出来
      

  4.   


    <form action="" name="sonform">
               <input type="text" name="sontext" value="">
               <input type="button" value="get opener text" onClick="getOpenerText()"><br>
               <select name="city" onChange="returnCity()">
                  <option value="Shanghai">Shanghai</option>
                  <option value="Shenzhen">Shenzhen</option>
            </select>
          </form>
    这里有2个问题form中有个逗号,getOpenerText没有括号,你这种opener.document.openerform.openertext.value写法只能在IE下才能使用,应该用document.getElementById的方式更加通用。
      

  5.   

    你这样写是获取不到的, window.showModalDialog 用这个方法吧 
      

  6.   

       <script>
            function name1() {
                var result = window.showModalDialog("showD.aspx", "", "dialogheight:160px; dialogwidth:300px; status:no; help:no; scroll:no");
                alert(result);
            }
    </script> 
    ---------showD.aspx 
    <script type="text/javascript">
                function  cols() {                window.returnValue = "http://homepage.yesky.com";
                    window.close();
                }        </script>
      

  7.   

    还是不行。对opener.document的操作完全无效:<!DOCTYPE html>
    <html>
      <head>
        <title>opener.html</title>

        <meta name="keywords" content="keyword1,keyword2,keyword3">
        <meta name="description" content="this is my page">
        <meta name="content-type" content="text/html; charset=GB18030">
        
        <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
        <script language="javascript">
            function newWin(){
                window.open("newwin.html","new window","width=200,height=150,scrollbars=yes,resizable=no");
            }
        </script>
      </head>
      
      <body>
        <form action="" name="openerform" id="openerformid">
            <input type="text" name="openertext" id="openertextid" value="beijing">
            <input type="button" value="New window" onClick="newWin()">
        </form>
      </body>
    </html><!DOCTYPE html>
    <html>
      <head>
        <title>newwin.html</title>

        <meta name="keywords" content="keyword1,keyword2,keyword3">
        <meta name="description" content="this is my page">
        <meta name="content-type" content="text/html; charset=GB18030">
        
        <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
        <script language="javascript">
            function getOpenerText(){
                alert("kk");
                var val=opener.document.getElementById("openertextid").value;
                alert(val);
                document.getElementById("sontextid").value=val;
            }
        
            function returnCity(){
               var city=document.getElementById("cityid").value;
               alert(city);
               //alert(opener.document.sonform.city.value);
                //opener.document.openerform.openertext.value=city;
                opener.document.getElementById("openertextid").value=city;
            }
        </script>
      </head>
      
      <body>
        
          <form action="" name="sonform" id="sonformid">
               <input type="text" name="sontext" id="sontextid" value="">
               <input type="button" value="get opener text" onClick="getOpenerText()"><br>
               <select name="city" id="cityid" onChange="returnCity()">
                  <option value="Shanghai">Shanghai</option>
                  <option value="Shenzhen">Shenzhen</option>
            </select>
          </form>
        
      </body>
    </html>
      

  8.   

    本地file浏览器测试不要用chrome(webkit核心的浏览器),不能互相操作