window.opener为null - 我试图在我的子窗口中提醒变量(来自父窗口) - Javascript

时间:2014-05-11 20:48:27

标签: javascript parent window.opener

我试图在子窗口中提醒变量(来自父窗口)。我在这里看过解决方案,但他们不为我工作,我认为我的代码中缺少或错误。当我运行代码时,错误控制台告诉我window.opener为null。我已经尝试过parent.window.opener ......这也说了同样的话。

parent.htm:

<head>
<script type="text/javascript">
            var testtest = "hi";

            function reply_click(clicked_id){

                document.getElementById('resultspanel').style.display = 'none';
                document.getElementById('mainpanel').style.display = 'none';            

                var buttonid = clicked_id;
                window.buttonid = buttonid; //makes it global
                alert(buttonid);

                switch(clicked_id) {
                    case "1":
                    case "2":
                    case "3":
                    case "4":
                    case "5":
                    case "6":
                    case "7":
                    case "8":                   
                    case "9":
                    case "10": $('#mainpanel').load("info.htm");document.getElementById('mainpanel').style.display = 'block'; break;    
                }

                    //$('#mydiv').load('newPage.html', {field1: 'value1', ...});
            }


            </script>
</head>

child.htm

<head>
<script type="text/javascript">
            function test(){
                //alert(this.parentNode.id);
                //alert(parent.window.opener.testtest);
                //window.opener.alert(testtest);
                var myvar = window.opener.buttonid;
                alert(myvar);
            }
        </script>
</head>
    <body>      
    <p>INFORMATION</p>
        <div id = "test" style = "border-style:solid; height:10%; width:10%;" onClick = "test();" >DIV</div>
    </body>

1 个答案:

答案 0 :(得分:0)

你在某种程度上是正确的。 window.opener是对窗口的引用,它打开了当前窗口。但这仅适用于使用window.open函数调用的窗口。它们通常出现在新窗口(或标签页)中。

如果需要处理不同的帧,那么他应该将parent属性用于直接祖先,top用于最顶层,frames属性用于直接子级。当您使用frameset代替iframe时(如框架集窗口不具有直接内容),会出现其他并发症。我希望你不会需要它们。