Christian Wichmann: Teile der Webseite in Netscape UND Internet Explorer verstecken

Okay, Stefan meinte einem Thread weiter unten, dass er hier mal wieder knifflige Fragen sehen moechte...

Auf einer Seite habe ich ein großes Texteingabefeld (in der Mitarbeiter eines Radiosenders Texte zu verschiedenen Sendungen eingeben sollen) und eine Dropdown-Box (in der man die verschiedenen Sendungen auswaehlen kann). Abhaengig von dem Eintrag, der in der Dropdown-Box gewaehlt ist, soll in dem Textfeld der zu der Sendung eingegebene Text angezeigt werden. Ich brauche also eine Art Zwischenspeicher fuer die ganzen Texte, da ja immer nur EINER angezeigt wird. Normalerweise wuerde ich so etwas im <INPUT TYPE=hidden...> loesen. Die schon beim Aufruf der Seite momentan aktuellen Texte, welche ich durch Server Side Includes direkt einlesen moechte, kann ich nicht in das value-Attribut der <INPUT type=hidden...> einsetzen, da diese Texte auch HTML-Tags und Anfuehrungszeichen enthalten. Also habe ich unten auf der Seite fuer jede Sendung eine <TEXTAREA> angelegt, in die per SSI der jeweilige Sendungstext gespeichert wird. Da diese <TEXTAREA>s aber ja nur Zwischenspeicher darstellen und vom Benutzer nicht manipulierbar sein sollen, moechte ich sie gern verstecken. Beim IE bekomme ich das mit Style Sheets (<DIV style="visibility:hidden">) hin, aber das kennt Netscape noch nicht. Beim Netscape koennte ich den Bereich als unsichtbares Layer (oh oh) definieren, aber dann kann ich nicht mehr per JavaScript auf die darin enthaltenen Formularelemente zugreifen...

Hat jemand eine zuendende Idee? Hat ueberhaupt jemand kapiert, was ich will?? ;-)

  1. Hallo Christian,

    Beim Netscape koennte ich den Bereich als unsichtbares Layer (oh oh) definieren, aber dann kann ich nicht mehr per JavaScript auf die darin enthaltenen Formularelemente zugreifen...

    Warum nicht? Es heisst dann nur nicht mehr:
    document.Formularname.Elementname.value
    sondern:
    document.Layername.document.Formularname.Elementname.value

    Ansonsten kannst Du <layer> und <div> einfach verschachteln. Netscape tut das nicht weh, und MS IE ignoriert das auessere <layer>. Das mit <div id="divIDname" style="visibility:hidden"> kommt im auesseren Layer dann in der Form <layer name="Layername" visibility="hide"> vor. Beim dynamischen Aendern dieser Eigenschaft mit einem JavaScript muss man dann die uebliche DHTML-Trennung zwischen Netscape und MS IE anwenden:

    if(document.all)
    document.divIDname.style.visibility = "visible";
    if(document.layers)
    document.Layername.visibility = "show";

    Das alles funktioniert aber nicht mit Browsern, die eine kleinere Versionsnummer als 4 haben :-(

    Viele Gruesse
      Stefan Muenz

  2. Hallo Christian,

    Hat jemand eine zuendende Idee? Hat ueberhaupt jemand kapiert, was ich will?? ;-)

    Vielleicht ;-))

    Normalerweise wuerde ich so etwas im <INPUT
    TYPE=hidden...> loesen. Die schon beim Aufruf der Seite momentan
    aktuellen Texte, welche ich durch Server Side Includes direkt
    einlesen moechte, kann ich nicht in das value-Attribut der <INPUT
    type=hidden...> einsetzen, da diese Texte auch HTML-Tags und
    Anfuehrungszeichen enthalten.
    <<

    Dann speicher die schon vorhandenen Texte doch in JavaScript-Variablen ab. Lassen sich ja auch mit SSI hineinschreiben: Z.B.

    im HEAD:

    <SCRIPT>
    var Sendung1 = "<i>Radio kursiv</i>";
    var Sendung2 = "<u>Radio unterstrichen</u>";
    ...
    /* besser waere natuerlich ein Array ;-) */
    </SCRIPT>

    Lediglich doppelte Anfuehrungszeichen machen Probleme (stattdessen einfache verwenden). Hier bis du eigentlich recht frei, und zur Not laesst sich mit den JavaScript-eingebauten oder auch eigenen ESCAPE-Routinen ALLES machen.

    Du kannst dann bei einem einzigen Textarea bleiben
    und den value="" - Wert ueber Java-Script, d.h. je nach Auswahl aus der Drop-down Liste manipulieren.

    Ist wohl letzlich einfacher als die Arbeit mit der Visibility von verschiedenen TEXTAREAs.

    (dazu noch kurz: koenntest auch mit style="display:non" arbeiten.)

    Tschuess
    Olaf

    1. Hallo Christian,

      ich muss mich korrigieren!

      Lediglich doppelte Anfuehrungszeichen machen Probleme (stattdessen einfache verwenden).

      So ein Unsinn schreibt man, wenn man JavaScript zulangen nicht mehr benutzt hat ;-)

      Doppelte Anfuehrungsstriche lassen sich mit " in Stringvariablen maskieren.

      Tschuess
      Olaf