我试图在子窗口中提醒变量(来自父窗口)。我在这里看过解决方案,但他们不为我工作,我认为我的代码中缺少或错误。当我运行代码时,错误控制台告诉我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>
答案 0 :(得分:0)
你在某种程度上是正确的。 window.opener
是对窗口的引用,它打开了当前窗口。但这仅适用于使用window.open
函数调用的窗口。它们通常出现在新窗口(或标签页)中。
如果需要处理不同的帧,那么他应该将parent
属性用于直接祖先,top
用于最顶层,frames
属性用于直接子级。当您使用frameset
代替iframe
时(如框架集窗口不具有直接内容),会出现其他并发症。我希望你不会需要它们。