David Di Donato: Probleme mit Frame aktualisierung / Opener und Window

hallo zusammen
ich hoffe ihr könnt mir helfen. ich sitze wirklich in der s....
folgendes problem habe ich:

  • ich habe eine startseite wo mit frames aufgebaut ist. (datei example1.html). vom linken frame öffne ich ein weiteres fenster (datei f.html). nun möchte ich vom geöffneten fenster eine datei laden, welche das hintere hauptfenster bzw. rechte frame aktualisiert. ich bekomme immer die meldung 'window.opener.... ist kein objekt'. wie kann ich dieses problem lösen. als beilage das listing von den einzelnen dateien. bitte helft mir.

[Datei example1.html]
<html>

<FRAMESET COLS="150,*" id="a">
  <FRAME NAME="menu_frm" SRC="menu.html">
  <FRAME NAME="index_frm" SRC="index.html">
</FRAMESET>

</html>

[Datei menu.html]
<html>
<body>
<script language="JavaScript">
<!--
function createWindow()
{
    var win_URL = "f.html";
    var win_Name = "_New";
    var win_Features = "width=400,height=200,top=30,left=30,resizable=no,scrollbars=yes,toolbar=no,location=no,menubar=no,status=no";
    var test_Win = window.open(win_URL, win_Name, win_Features);
    test_Win.focus();
}
//-->
</script>
<p>
  <a href="#" onClick="javascript:createWindow();">Open Window</a>
</p>
</body>
</html>

[Datei index.html]
<html>
<body>
<h1>index.html</h1>
</body>
</html>

[Datei f.html]
<html>
<frameset  rows="*" cols="*" bordercolor="#d3d3d3">
    <frame name="" src="subwindow.html">
</frameset>
</html>

[Datei subwindow.html]
<html>
<body>
<script language="JavaScript">
<!--
function loadParentFrame(url)
{
    window.opener.parent.index_frm.location.href = url;
    window.close();
}
//-->
</script>
<form>
<input type="button" name="button1" value="Load index2.html into Frame" onClick="javascript:loadParentFrame('index2.html');">
</form>
</body>
</html>

  1. Hi David,

    was passiert denn, wenn Du spaßeshalber mal subwindow.html in f.html umbenennst? Tritt das Problem dann immer noch auf?

    Erklärung: das soweit ich sehen kann nutzlose Frameset f.html hat einen Opener. Das aus f.html heraus aufgerufene subwindow.html dagegen natürlich nicht, es wurde ja nicht per JS in ein neues Fenster geladen. Wenn Du also das Frameset einfach rausschmneißt und die Datei direkt lädst, ist Dein Opener da. Wenn das Frameset partout sein muss: pack Deine Funktion in das Frameset und rufe sie über parent.loadParentFrame('index2.html'); aus subwindow.html heraus auf.

    Huh, das war jetzt verm. ziemlich verwirrend erklärt. Probier erst mal aus, ob's hilft.

    Grüße,

    Utz