gruss abtauchen, hallo Struppi,
struppi hat recht - nicht das "document" ist der opener,
sondern das "window"-objekt in welchem "document" liegt-
dem eher unwahrscheinlichen fall, das einem remote-window
die referenz auf seinen opener "verloren gehen" sollte,
kann man noch zusaetzlich vorbeugen, indem man den "opener"
explizit in dieser form setzt:
var remoteWin = window.open("","...","...");
remoteWin.opener = this;
so laeuft z.b. dieser code anstandslos in NN 4.x, mozilla 1.1, msie 6.0, opera 6 und opera 7:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>opener</title>
<meta http-equiv="content-script-type" content="text/javascript" />
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
<script type="text/javascript">
<!--
function openRemote() {
var remoteContent = ''+
'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">\n'+
'<html>\n'+
'\n'+
'<head>\n'+
' <title>remote</title>\n'+
' <meta http-equiv="content-sc' + 'ript-ty' + 'pe" content="text/ja' + 'vasc' + 'ript" />\n'+
' <meta http-equiv="content-ty' + 'pe" content="text/ht' + 'ml; charset=ISO-8859-1" />\n'+
' <sc' + 'ript ty' + 'pe="text/ja' + 'vasc' + 'ript">\n'+
' <' + '!-' + '-\n'+
' function changeOpenerContent() {\n'+
' var openerContentNew = ''+\n'+
' '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">\n'+\n'+
' '<html>\n'+\n'+
' '\n'+\n'+
' '<head>\n'+\n'+
' ' <title>still opener - changed content</title>\n'+\n'+
' ' <meta http-equiv="content-ty' + 'pe" content="text/ht' + 'ml; charset=ISO-8859-1" />\n'+\n'+
' '</head>\n'+\n'+
' '\n'+\n'+
' '<body>\n'+\n'+
' ' <p>content of "remoteWin"s opener got changed<br /><br />der inhalt des openers von "remoteWin" wurde geändert</p>\n'+\n'+
' '</body>\n'+\n'+
' '</html>\n'\n'+
' opener.document.open("text/html");\n'+
' opener.document.write(openerContentNew);\n'+
' opener.document.close();\n'+
' alert("content of opener has changed\nder inhalt des openers hat sich geaendert");\n'+
' alert("prove if \"remoteWin\" still can reference its opener -\npruefen, ob \"remoteWin\" noch auf seinen opener referenzieren kann -\n\nopener.name = "+opener.name+"\nopener.document.title = "+opener.document.title);\n'+
' }\n'+
' /' + '/--' + '>\n'+
' </sc' + 'ript>\n'+
'</head>\n'+
'\n'+
'<body onload="if(opener){alert('opener.name = '+opener.name);changeOpenerContent();}">\n'+
' <p>html content of "remoteWin" itself<br /><br />html inhalt von "remoteWin"</p>\n'+
'</body>\n'+
'</html>\n';
var remoteWin = window.open("","remoteWindow","width=350,height=100,resizable=yes,scrollbars=yes");
this.name = "openerWin";
remoteWin.opener = this;
remoteWin.moveTo(350,250);
remoteWin.document.open("text/html");
remoteWin.document.write(remoteContent);
remoteWin.document.close();
}
//-->
</script>
</head>
<body onload="openRemote()">
<p>html content of "remoteWin"s opener<br /><br />html-inhalt der opener-seite von "remoteWin"</p>
</body>
</html>
viel erfolg und by(t)e by(t)e - peterS. - pseliger@gmx.net
--
sh:| fo:) ch:? rl:| br:& n3:} n4:# ie:| mo:{ va:| de:[ zu:] fl:) ss:) ls:& js:)