Jonny: Body-Inhalt-Ausgabe steuern

Guten Tag,

habe folgendes Problem. Ich möchte in meinem Frame-Fenster:
--------------------------------------------------------
<html><head><script langauge="JavaScript">
if(window.self == top) window.location.href="oberframe.htm";
</script></head><body>
*----------*
|          |
|   body   |
|          |
*----------*
</body></html>
--------------------------------------------------------
den Body-Inhalt je nach dem rausbringen, ob das ein Top-Window
ist oder nicht. Problem existiert nur dann, wenn der Browser
keine aktive Inhalte zulässt. Ich kann mir nur  eine CSS-Lösung
vorstellen, jedoch in CSS-Sachen bin ich leider nicht so fit.
Bzw. wie kann man das Problem lösen? Es wäre mir eine grosse
Hilfe, wenn das Problem unter mind. Netscape 4.6 und Opera 5.2
auch nicht auftauchen würde. Übrigens, der html-File wird aus
PHP generiert, falls es eine Hilfe sein soll.

Und noch eine Frage: wo kann man bei IE(6.0) die Frame-Akzeptierung
ausschalten, um zu sehen, was dabei passiert.

Vielen Dank im voraus.

MfG, Jonny

  1. Hi,

    if(window.self == top) window.location.href="oberframe.htm";

    sofern Javascript aktiviert ist, sieht der Besucher also die gewünschte Seite gar nicht, sondern wird zur Startseite geschickt? Fiese Sache.

    Ich kann mir nur  eine CSS-Lösung vorstellen

    CSS weiß nichts von den Fenstern. Aber eigentlich ist das auch gar nicht nötig.
    Wenn Javascript aktiviert ist und die Seite nicht im Frameset angezeigt wird, dann erfolgt ohnehin eine Weiterleitung. Du mßt also dort ansetzen, sprich etwas nur dann anzeigen, wenn Javascript deaktiviert ist oder nicht zur Verfügung steht. Du kennst <noscript>?

    Übrigens, der html-File wird aus
    PHP generiert, falls es eine Hilfe sein soll.

    Nö. auch PHP weiß nichts von clientseitigen Fenstern.

    Und noch eine Frage: wo kann man bei IE(6.0) die Frame-Akzeptierung
    ausschalten, um zu sehen, was dabei passiert.

    Du meinst vermutlich Javascript, oder? Das heißt hier ActiveScripting.

    freundliche Grüße
    Ingo

    1. Hi, Ingo! Vielen Dank erstmal für die Antwort!

      Hi,

      if(window.self == top) window.location.href="oberframe.htm";
      sofern Javascript aktiviert ist, sieht der Besucher also die gewünschte Seite gar nicht, sondern wird zur Startseite geschickt? Fiese Sache.

      Ist keine fiese Sache. Der User soll das Frame-Fenster nicht separat anzeigen können.

      Ich kann mir nur  eine CSS-Lösung vorstellen
      CSS weiß nichts von den Fenstern. Aber eigentlich ist das auch gar nicht nötig.
      Wenn Javascript aktiviert ist und die Seite nicht im Frameset angezeigt wird, dann erfolgt ohnehin eine Weiterleitung. Du mßt also dort ansetzen, sprich etwas nur dann anzeigen, wenn Javascript deaktiviert ist oder nicht zur Verfügung steht. Du kennst <noscript>?

      Der Inhalt bleibt jedoch im Falle, wenn Javascript deaktiviert ist ja derselbe und das möchte ich nicht. Mit <noscript> wäre hier zwar geholfen, aber nur zu 50%. Ich bräuchte also hier noch sowas wie <yes_script>, damit der Body-Inhalt im Falle, dass der Javascript deaktiviert ist, erst gar nicht angezeigt wird. Mann könnte natürlich es mit document.print machen, aber jede Zeile mit print auszugeben und das auch noch zweifach(+1 mal im PHP) wäre zuviel Arbeit.

      Übrigens, der html-File wird aus
      PHP generiert, falls es eine Hilfe sein soll.
      Nö. auch PHP weiß nichts von clientseitigen Fenstern.

      PHP ist hier nur deswegen erwähnt, damit die Leute wissen, was ich zur Verfügung habe.

      Und noch eine Frage: wo kann man bei IE(6.0) die Frame-Akzeptierung
      ausschalten, um zu sehen, was dabei passiert.
      Du meinst vermutlich Javascript, oder? Das heißt hier ActiveScripting.

      mit Frame-Akzeptierung meine ich es auch so. Diese Frage sollte ich separat stellen, denn hier ist sie falsch. Ich meine hier also, dass ich den IE(6.0) so einstellen möchte, dass er die Frames nicht anzeigen kann.

      freundliche Grüße
      Ingo

      nochmals Danke für die nette Antwort.

      MfG, Jonny

      1. Hi,

        Ich kann mir nur  eine CSS-Lösung vorstellen

        Den Inhalt eines Elementes kannst Du mittels CCS nur über die Eigenschaft -moz-binding steuern. Das funktioniert nur in Gecko Browsern.
        So kann dann auch der Inhalt des bodies über CSS gesteuert werden.
        Das sieht dann etwa so aus:

        <body id="b1"></body>

        und im CSS-file:

        #b1 {-moz-binding:url(/path/datei.xml#id1);}

        datei.xml hat folgende Struktur:

        <bindings>
        <binding id="id1">
        html:pHier kommt etwas Text</html:p>
        </binding>
        </bindings>

        die namespaces müssen natürlich auch noch deklariert werden:
        xmlns="http://www.mozilla.org/xbl"
        xmlns:xbl="http://www.mozilla.org/xbl"
        xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
        xmlns:xhtml="http://www.w3.org/1999/xhtml"

        wie gewöhnlich im root-Element.

        mit Frame-Akzeptierung meine ich es auch so. Diese Frage sollte ich separat stellen, denn hier ist sie falsch. Ich meine hier also, dass ich den IE(6.0) so einstellen möchte, dass er die Frames nicht anzeigen kann.

        Da MSIE -moz-binding nicht versteht wird, falls sonst nichts im Body steht als die anonymen Elemente auch nichts angezeigt.

        Gruß
        xulking

      2. Hi,

        if(window.self == top) window.location.href="oberframe.htm";
        sofern Javascript aktiviert ist, sieht der Besucher also die gewünschte Seite gar nicht, sondern wird zur Startseite geschickt? Fiese Sache.

        Ist keine fiese Sache. Der User soll das Frame-Fenster nicht separat anzeigen können.

        sofern die gewünschte Seite dann nicht auch im Frameset angezeigt wird, ist das fies - und auch unsinnig, denn wer z.B. über eine Suchmaschine kommt, wird nicht nochmals nach der ja bereits gefndenen Seite suchen wollen.

        Mit <noscript> wäre hier zwar geholfen, aber nur zu 50%. Ich bräuchte also hier noch sowas wie <yes_script>, damit der Body-Inhalt im Falle, dass der Javascript deaktiviert ist, erst gar nicht angezeigt wird. Mann könnte natürlich es mit document.print machen, aber jede Zeile mit print auszugeben und das auch noch zweifach(+1 mal im PHP) wäre zuviel Arbeit.

        Du meinst document.write. Und da führt kein Weg dran vorbei.

        freundliche Grüße
        Ingo

      3. Hallo Jonny,

        if(window.self == top) window.location.href="oberframe.htm";

        Fiese Sache.

        Ist keine fiese Sache. Der User soll das Frame-Fenster nicht separat anzeigen können.

        Ist es doch. Das Standard-Framefenster interessiert mich in diesem Fall nämlich Nüsse. Warum lädst du nicht die gewünschte Seite ins Frameset?

        http://aktuell.de.selfhtml.org/artikel/javascript/dyn-frames/
         http://aktuell.de.selfhtml.org/artikel/phpasp/php-frames/

        Grüße
         Roland

        1. Hallo Jonny,

          if(window.self == top) window.location.href="oberframe.htm";

          Fiese Sache.

          Ist keine fiese Sache. Der User soll das Frame-Fenster nicht separat anzeigen können.

          Ist es doch. Das Standard-Framefenster interessiert mich in diesem Fall nämlich Nüsse. Warum lädst du nicht die gewünschte Seite ins Frameset?

          http://aktuell.de.selfhtml.org/artikel/javascript/dyn-frames/
          http://aktuell.de.selfhtml.org/artikel/phpasp/php-frames/

          Grüße
          Roland

          »»
          Hi Roland, danke für die Antwort!

          Deine Beispiele sind zwar gut, doch helfen sie mir gar nicht.
          Meine Schuld, dass ich es nicht erwähnt habe: die Haupt-Frame-Seite
          kann ich nicht verändern. Ich habe eine Domäne gekauft und dort wird
          unsichtbare Weiterleitung angeboten. Es ist also nichts weiter als
          ein Frameset, der aus einem Frame besteht. Den Verweis auf den Frame
          darf ich ändern, aber sonst weiter nichts. Speicherplatz ist auch nicht
          drin und kein FTP. Meine Idee ist: den Speicherplatz bei mir auf dem Computer
          zu verwenden und darauf(IP-Adresse) zu verweisen. So würde dann immer
          in der Adresszeile mein Domain-Name stehen. Probleme kommen jedoch,
          wenn der User manuell ein Link, der auf meine Seite verweist, im neuem
          Fenster öffnet. Also, es geht mir hier nicht um die Navigation, sondern
          darum, dass der User in diesem Fall in der Adresszeile eine IP-Adresse
          bekommt. 1.tens ist es nicht schön und 2.tens kommt der User nicht mehr
          auf meine Seite, falls er es als Link gespeichert hat, da die IP sich
          inzwischen vielleicht schon geändert hat.

          Höchstwahrscheinlich muss ich mir in dem Fall die Arbeit machen und
          im PHP folgendes schreiben:

          print "<script language='JavaScript'>";
          print "document.write('html-Inhalt');";
          print "</script>";

          In diesem Fall wird der Script nicht ausgeführt, wenn er abgeschaltet ist.
          Und der Teil <noscript> wird angezeigt, in dem dem User gesagt wird, dass
          er die Seite auf dem anderem Weg erreichen soll.

          Also, ich brauche ein nicht existierenden Html-Tag <yes_script>
          damit ich bei PHP nicht so viel schreiben muss.

          Vielleicht kann mir einer sagen, wie ich mein Problem, ohne soviel Aufwand, lösen kann?

          MfG, Jonny

          1. Hallo

            Also, ich brauche ein nicht existierenden Html-Tag <yes_script>
            damit ich bei PHP nicht so viel schreiben muss.

            Mitnichten. Was du brauchst, ist ein neuer Hoster, bei dem du auch Webspace haben kannst. Damit würden sich deine hier geschilderten Probleme mit einem Schlag erledigt haben.

            Tschö, Auge

            --
            Die Musik drückt aus, was nicht gesagt werden kann und worüber es unmöglich ist zu schweigen.
            (Victor Hugo)
            Veranstaltungsdatenbank Vdb 0.1
          2. Hallo Jonny,

            Ich habe eine Domäne gekauft und dort wird
            unsichtbare Weiterleitung angeboten. Es ist also nichts weiter als
            ein Frameset, der aus einem Frame besteht. Den Verweis auf den Frame
            darf ich ändern, aber sonst weiter nichts. Speicherplatz ist auch nicht
            drin und kein FTP.

            Dann hast du nach meiner Definition keine Domäne gekauft.

            Meine Idee ist: den Speicherplatz bei mir auf dem Computer
            zu verwenden und darauf(IP-Adresse) zu verweisen. So würde dann immer
            in der Adresszeile mein Domain-Name stehen.

            Auch das ist ein gravierender Nachteil. Man kann keine Bookmarks setzen.

            wenn der User manuell ein Link, der auf meine Seite verweist, im neuem
            Fenster öffnet. Also, es geht mir hier nicht um die Navigation, sondern
            darum, dass der User in diesem Fall in der Adresszeile eine IP-Adresse
            bekommt. 1.tens ist es nicht schön und 2.tens kommt der User nicht mehr
            auf meine Seite, falls er es als Link gespeichert hat, da die IP sich
            inzwischen vielleicht schon geändert hat.

            Das beheben DynDNS oder ein ähnlicher Anbieter.

            Höchstwahrscheinlich muss ich mir in dem Fall die Arbeit machen und
            im PHP folgendes schreiben:

            print "<script language='JavaScript'>";
            print "document.write('html-Inhalt');";
            print "</script>";

            Ohje, das wir ja immer schlimmer. ;-) Damit schließt du alle Besucher aus, denen JavaScript nicht zur Verfügung steht, was gern gesehene Suchmaschinen-Bots inkludiert. Außerdem bedeutet das einen enormen Arbeitsaufwand und bringt eine erhöhte Fehleranfälligkeit mit sich.

            In diesem Fall wird der Script nicht ausgeführt, wenn er abgeschaltet ist.
            Und der Teil <noscript> wird angezeigt, in dem dem User gesagt wird, dass
            er die Seite auf dem anderem Weg erreichen soll.

            Sehr gut, das ist eine sinnvolle Alternative. Allerdings nur, wenn du den Inhalt damit vollständig abbildest.

            Also, ich brauche ein nicht existierenden Html-Tag <yes_script>

            Das existiert in der Form <script>.

            damit ich bei PHP nicht so viel schreiben muss.

            Und noch eine Stelle, an der du mehr Aufwand treiben musst.

            Vielleicht kann mir einer sagen, wie ich mein Problem, ohne soviel Aufwand, lösen kann?

            http://webhostlist.de/

            Das scheint mir die einzig vernünftige Lösung zu sein. Speicherplatz kostet fast nichts mehr. Rechne die Zeit dagegen, die du damit verbringst, Krücken zur Behebung des aktuellen Zustands zu basteln. Die paar monatlichen Euros dürften sich schnell amortisieren.

            Grüße
             Roland