Michael Schröpl: (MSIE) Dynamischer "Framer"

Hi,

aufgrund einer Anregung aus dem Archiv habe ich versucht, mit Hilfe von JavaScript einer Gruppe von Artikeln beizubringen, bei ihrer Anzeige selbständig das sie umgebende Frameset zu generieren (für Treffer aus Suchmaschinen usw.).

Die Netscape-Variante klappt auch tadellos. Die Variante für den MSIE dagegen produzieren eine Fehlermeldung, die meine (bescheidenen) Kenntnisse der JavaScript-Objekthierarchie übersteigt.

Kann mir vielleicht jemand erklären, wie ich die Lösung so anpassen kann, daß sie auch im MSIE funktioniert? (MSIE 4 und 5 produzieren die unten angegebene Fehlermeldung.)

------------

Das Skript: (wie gesagt, hier aus dem Archiv - vielleicht erkennt der Autor es ja wieder ...)

function createFrameSet ()
{
  /* Wird das Dokument außerhalb seines normalen Frames angezeigt? */
  if (   this.document     == top.document
       top.location.host != this.location.host)
     {
       /* URL der übergeordneten Ebene berechnen */
       var ebene_1    = location.pathname.substring (0, location.pathname.lastIndexOf ('/')    );
       var ebene_2    = location.pathname.substring (0, ebene_1.lastIndexOf           ('/') + 1);
       var pathprefix = location.protocol + '//' + location.host + ebene_2;

/* neues Frameset-Dokument generieren */
       var doctitle = document.title;
       document.clear   ();
       document.open    ("text/html");
       document.writeln ('<html>');
       document.writeln ('<head><title>AutoFramed: ' + doctitle + '</title></head>');
       document.writeln ('<frameset rows="*,63" BORDER=0>');
       document.writeln (' <frame src="' + top.location.href + '" name=textWindow>');
       document.writeln (' <frame src="' + pathprefix + 'menu.htm" name=subMenu MARGINWIDTH=1 NORESIZE SCROLLING=NO>');
       document.writeln ('</frameset>');
       document.writeln ('</html>');
       document.close   ();
       return true;
     }
  return false;
}

function is_msie ()
{
  /* Ist das ein Microsoft-Browser? */
  return (navigator.appName == "Microsoft Internet Explorer");
}

function msieFraming ()
{
  if (is_msie ())
     {
       if (createFrameSet ())
          {
            window.setTimeout ('top.frames["content"].location.href = ' + '"' + top.location.href + '";', 10);
          }
     }
}

function netscFraming ()
{
   if (! is_msie ())
      createFrameSet ();
}

msieFraming ();

------------

Die Einbindung:

<SCRIPT LANGUAGE="JavaScript1.1" SRC="../../../include.js"></SCRIPT>

innerhalb von <HEAD>..</HEAD>

und

<BODY onLoad="netscFraming(2)">

(was aber bei MSIE nichts bewirken sollte).

------------

Die Fehlermeldung:
Zeile 1, Zeichen 1: "top.frames.content.location" ist kein Objekt.

  1. Hallo Michael,

    aufgrund einer Anregung aus dem Archiv habe ich versucht, mit Hilfe von JavaScript einer Gruppe von Artikeln beizubringen, bei ihrer Anzeige selbständig das sie umgebende Frameset zu generieren (für Treffer aus Suchmaschinen usw.).

    die beste Lösung für dieses Problem steht hier :-)
    http://www.teamone.de/selfaktuell/jsframes.htm

    Jetzt zur Fehlermeldung, der IE-Part spricht einen

    window.setTimeout ('top.frames["content"].location.href = ' + '"' + top.location.href + '";', 10);
              }

    Frame Namens "content" an, der wird aber nicht im Script definiert. Im Navi ist das nicht der Fall, deshalb liefert der auch keine Fehlermeldung.

    Viele Grüße

    Antje

    1. die beste Lösung für dieses Problem steht hier :-)
      http://www.teamone.de/selfaktuell/jsframes.htm

      Hm, was diese Übergabe der "Suchzeichenkette" angeht, habe ich irgendwas in Erinnerung, daß die bei MSIE offline nicht funktioniert ... ?
      Das Frames-Generieren wie angegeben funktioniert ja prima im Netscape - deshalb war ich mit der Lösung glücklich, bis ich sie im MSIE ausprobiert habe.

      Frame Namens "content" an, der wird aber nicht im Script definiert. Im Navi ist das nicht der Fall, deshalb liefert der auch keine Fehlermeldung.

      Daß der MSIE- und der Netscape-Code unterschiedlich sind, ist mir klar - ich habe die MSIE-Variante bloß nicht gut genug verstanden, weil ich die Unterschiede zwischen den Browser nicht im Detail kenne.

      1. die beste Lösung für dieses Problem steht hier :-)
        http://www.teamone.de/selfaktuell/jsframes.htm

        Hm, was diese Übergabe der "Suchzeichenkette" angeht, habe ich irgendwas in Erinnerung, daß die bei MSIE offline nicht funktioniert ... ?

        ersetze das ? durch # und dann funktioniert es auch offline

        Daß der MSIE- und der Netscape-Code unterschiedlich sind, ist mir klar - ich habe die MSIE-Variante bloß nicht gut genug verstanden, weil ich die Unterschiede zwischen den Browser nicht im Detail kenne.

        Eigentlich ist in diesem Bereich der Code gar nicht unterschiedlich. Lasse einfach die Browserunterscheidung weg und rufe in beide Browsern nach der Navivariante auf. Das Script ist ja nur ein Ausschnitt und damit ist nicht nachvollziehbar, was es direkt im IE bewirken soll und welche Komponeten eventuell noch wirken könnten.

        Viele Grüße

        Antje