Stephan: explorer lädt keine Seite aus document.URL

Folgendes Problem,
eine Seite die Bestandteil eines Framesets ist, soll im Falle eines seperaten Aufrufes(Google) das Frameset selber generieren und sich in den entsprechenden Frame schreiben. Mit writeln wird der entsprechende Code an den Browser geschickt und per document.URL oder window.location.pathname oder ... etc die Seite in den entsprechend Frame geladen. Das klapt mit dem Script unten unter Firefox einwandfrei nur der Explorer macht da nicht mit. Es scheint, dass document.URL, window.location.pathname,... etc. in der writeln-Methode unwirksam sind. Die restlichen Frames werden korrekt gefüllt.
Weis jemand was ich da falsch mache?
Danke.

code:
if(parent.document.getElementsByTagName("frameset").length <= 0)
 {

pfad = "<frame src="" + document.URL + "" name="content" frameborder="no" scrolling="auto" noresize marginwidth="0" marginheight="0" id="content">";
  alert(pfad);
  //document.writeln(document.URL);
  document.writeln('<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">');
  document.writeln('<html>');
  document.writeln('<head>');
  document.writeln('<title>Transporterraum berlin.</title>');
  document.writeln('<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">');
  document.writeln('</head>');
  document.writeln('<frameset rows="*,50" framespacing="0" frameborder="no" border="0">');
  document.writeln('<frameset cols="600,*" framespacing="0" frameborder="no" border="0">');
  document.writeln(pfad);
  document.writeln('<frame src="player/player_blank.html" name="player" frameborder="no" scrolling="no" noresize marginwidth="0" marginheight="0" id="player">');
  document.writeln('</frameset>');
  document.writeln('<frame src="menu.html" name="menu" frameborder="no" scrolling="no" noresize marginwidth="0" marginheight="0" id="menu">');
  document.writeln('</frameset>');
  document.writeln('<noframes><body>');
  document.writeln('</body></noframes>');
  document.writeln('</html>');
 }

  1. Hallo,

    eine Seite die Bestandteil eines Framesets ist, soll im Falle eines seperaten Aufrufes(Google) das Frameset selber generieren und sich in den entsprechenden Frame schreiben.

    es dürfte mehrere Lösungen geben.

    Der IE sollte mit window.location o.ä. eigentlich klarkommen.
    Ein Versuch wäre statt writeln erst eine vollständige Variable der ganzen Datei,
    oder auch des kompletten Framesets, zu erzeugen und diese auf einmal zu schreiben.

    Habs jetzt nicht getestet aber im Prinzip so:

    </head>
    <script ...>
     var wri='<frameset>';
      wri+='<frame src="'+window.location+'" name=... ';
      wri+='<noframes>...</noframes>';
      wri+='</frameset>';
     document.write(wri);
    </script>
    </html>

    Du kannst aber auch versuchen im Frameset z.B. about:blank als src zu laden und
    dann die nötige Datei per JavaScript in das Frame nachzuladen, u.U. über
    ein geeignetes onload.

    Grüsse

    Cyx23

    1. Danke erstmal für den Tip mit der variable. Hat aber nichts genützt. Ich kanns drehen und wenden wie ich will, der explorer schreibt die seite einfach nicht in den frame. window.location habe ich auch schon probiert, mit dem selben ergebniss.seltsam ist nur, dass andere statische seiten in andere frames des framesets hineingeladen werden.
      Es klapt eiwandfrei mit Firefox Win/mac und Safari. der explorer zeigt lediglich im quellcode ein html in/out an. ich nehme an microsoft hat sich sicherheitstechnisch auf die falschen sachen konzentriert.

      stephan

      1. Hallo,

        Es klapt eiwandfrei mit Firefox Win/mac und Safari. der explorer zeigt lediglich im quellcode ein html in/out an. ich nehme an microsoft hat sich sicherheitstechnisch auf die falschen sachen konzentriert.

        über die Ursachen könnte ich nur spekulieren.

        Es gibt ja noch die schon erwähnte Möglichkeit nachzuladen, über eine
        Browserweiche kannst du ja nur den IE entspr. versorgen.
        Hier eine solche Lösung für den Netscape 4, vielleicht lässt es sich auf auf
        den IE übertragen:
        http://www.lipfert-malik.de/webdesign/tutorial/bsp/iframe_Netscape4_2.html

        Grüsse

        Cyx23

  2. Hallo Stephan

    Folgendes Problem,
    eine Seite die Bestandteil eines Framesets ist, soll im Falle eines seperaten Aufrufes(Google) das Frameset selber generieren und sich in den entsprechenden Frame schreiben.

    Es scheint, dass document.URL, window.location.pathname,... etc. in der writeln-Methode unwirksam sind. Die restlichen Frames werden korrekt gefüllt.

    Zu Gernots Artikel Übergroße Tabellen, hatte ich an einer Version
    gearbeitet, die ohne extra Framesetdatei auskommen sollte. Dort sollte ein
    Javascriptscript das Frameset schreiben und die Tabelle(n) in dieses laden.
    In vielen Browsern, auch im IE unter Windows 98 funktionierte das ohne
    Probleme.
    Als ich es dann unter Windows 2000 testete, blieben die Frames leer.
    Ich führte dann weitere Tests durch, es gelang mir nicht, in den Frame einer
    Seite sich selbst zu laden, auch nicht, wenn ich die URL im Javascript
    direkt angab.

    Es blieb dann bei dem extra Frameset:
    http://d-graff.de/demos/selfhtml/sprachlernspiele/tabelle.html
    bis auf die Tabellen selbst identisch:
    http://d-graff.de/demos/selfhtml/sprachlernspiele/testtab.html
    http://d-graff.de/demos/selfhtml/sprachlernspiele/Timeline.html

    Du wirst wohl eine separate Framesetdatei nicht vermeiden können.

    Auf Wiederlesen
    Detlef

    --
    - Wissen ist gut
    - Können ist besser
    - aber das Beste und Interessanteste ist der Weg dahin!
    1. danke detlef,
      weiss jetzt an was ich bin, werde wohl auf php ausweichen.

      stephan