Jürgen Stein: Windowtitel nachträglich ändern (in Netscape)... Lösung gefunden!

nach unermütlicher wochenlanger Suche habe ich diese Nacht eine Lösung dafür gefunden!
(Stefan hatte mir ja früher schon mal den Mut genommen!)

Wofür?
dafür:
  Windowtitel nachträglich ändern IM NETSCAPE...

wie das geht?

bei mir so:
<BODY>
  <LAYER name=settitel visibility=hidden></LAYER>
</BODY>

<SCRIPT>
  document.settitel.src=cgi-bin/settitel.ksh
</SCRIPT>

das settitel ist folgendes script:

echo "content-type:text/html"
echo
echo "<HTML><HEAD><TITLE>Neuer-Titel</TITLE></HEAD></HTML>"

aber ich vermute mal das das auch so geht, habe keine zeit zum Testen...

document.settitel.open()
document.settitel.clear()
document.settitel.write("<HTML><HEAD><TITLE>Neuer-Titel</TITLE></HEAD></HTML>")
document.settitel.close()

Wenn ich mal Zeit habe zum testen werde ich das tun...

-Jürgen

NOCH WAS:
  IN DER GLEICHEN NACHT WURDE MIR MEIN MOTORRAD GEKLAUT!
  WER ALSO IM RAUM DRESDEN DIE NÄCHSTEN TAGE EINE DUNKELGRÜNE HONDA CB-500 ZUM SCHLEUDERPREIS ANGEBOTEN BEKOMMT KANN SICH JA MAL BEI MIR MELDEN!

  1. Hallo Jürgen

    nach unermütlicher wochenlanger Suche habe ich diese Nacht eine Lösung dafür gefunden!

    Die Loesung, die Du vorschlaegst, ist serverseitig. Dass man mit CGI-Scripts, die auf den Server zurueckgreifen, neuen HTML-Code an den Browser senden kann, ist bekannt. Bei dem Problem ging es aber darum, wie man mit JavaScript den Titel aendern kann. Und das geht bei Netscape nun mal nicht.

    Dennoch interessant. Vielleicht verraetst Du uns mal mehr ueber den Einsatz von Unix Shellscript als CGI-Sprache!

    viele Gruesse
      Stefan Muenz

    1. Die Loesung, die Du vorschlaegst, ist serverseitig....

      gut solange lese und schreibe ich das Forum noch nicht mit, aber was mich wundert ist - das das mit dem layer.write("<title>...</title>") nicht geht. ist da so ein großer unterschied zwischen daten die der Server ins Layer schreibt, und daten die ich rein schreibe. (in meiner logik ist da keiner - denkfehler???)

      Dennoch interessant. Vielleicht verraetst Du uns mal mehr ueber den Einsatz von Unix Shellscript als CGI-Sprache!

      na dann fragt doch ;-). ich/wir machen hier "noch" alles mit ksh's (und awk's). Mir sind leider keine Vor/Nachteile bekannt. Mal sehen wie ich nach dem Perl kurs drüber rede.

      Vorteil... die Unixbefehle sind sehr leistungsfähig, und da ich damit aufgewachsen bin war das das beste/einfachste.

      Frage zu PERL:

      Ich führe in meinen Scripts immer Datenbankabfragen durch (ist leider der einzige weg) und bereite die Daten mit awk auf.  
      Ist PERL leistungsfähiger als der awk ins sachen ;-separierter Files (wie Zeilenlänge? Feldanzahl sollte schon 1500 können nicht bloß (1)99), wie performant ist Perl?  
        
      -Jürgen  
      
      
      1. gut solange lese und schreibe ich das Forum noch nicht mit, aber was mich wundert ist - das das mit dem layer.write("<title>...</title>") nicht geht. ist da so ein großer unterschied zwischen daten die der Server ins Layer schreibt, und daten die ich rein schreibe. (in meiner logik ist da keiner - denkfehler???)

        Schon seltsam...
        Sollte aber eigentlich auch mit normalen HTML-Dateien statt cgi-Ausgabe funktionieren, oder?

        Vorteil... die Unixbefehle sind sehr leistungsfähig, und da ich damit aufgewachsen bin war das das beste/einfachste.

        Jo, awk und sed sind schon nicht übel - aber Perl kann (fast) alles, was (k)sh, awk und sed ausmachen in einer Sprache...

        Ich führe in meinen Scripts immer Datenbankabfragen durch (ist leider der einzige weg)

        Wieso "leider"?

        und bereite die Daten mit awk auf.
        Ist PERL leistungsfähiger als der awk ins sachen ;-separierter Files (wie Zeilenlänge? Feldanzahl sollte schon 1500 können nicht bloß (1)99),

        Da solltest du eingentlich keine Umstiegs-Probleme haben.
        Die meisten Sachen funktionieren in Perl genauso wie im awk.

        wie performant ist Perl?

        Sehr :) - im Normalfall jedenfalls wesentlich flotter als awk.

        Du solltest dann aber darüber nachdenken, die DB-Abfragen direkt in Perl zu machen, das geht schneller, und die ";"-Risiken (es könnte ja mal eins im Text vorkommen...) sind weg...

        Ciao,
        Mirko

        1. Schon seltsam...
          Sollte aber eigentlich auch mit normalen HTML-Dateien statt cgi-Ausgabe funktionieren, oder?

          siehe ein paar Messages weiter oben woran es hängt...

          Vorteil...

          Jo, awk und sed sind schon nicht übel - aber Perl kann (fast) alles, was (k)sh, awk und sed ausmachen in einer Sprache...

          klingt super (mal warten in drei wochen spreche ich vieleicht schon perl)

          Ich führe in meinen Scripts immer Datenbankabfragen durch (ist leider der einzige weg)
          Wieso "leider"?

          leider... ähmmm naja wenn Perl auch "Befehle" ausführen kann gehts bestimmt ;-)

          Da solltest du eingentlich keine Umstiegs-Probleme haben.

          klingt nach schönen Ostern ;-)

          wie performant ist Perl?
          Sehr :) - im Normalfall jedenfalls wesentlich flotter als awk.

          naja performance ist nicht das problem, da bricht eher das 100MBit netz zusammen als die UNIX Maschine

          ok, das wars
          -Jürgen

      2. Hallo Juergen,

        gut solange lese und schreibe ich das Forum noch nicht mit, aber was mich wundert ist - das das mit dem layer.write("<title>...</title>") nicht geht. ist da so ein großer unterschied zwischen daten die der Server ins Layer schreibt, und daten die ich rein schreibe. (in meiner logik ist da keiner - denkfehler???)

        Layer sind eigene Dokumente im Dokument. Deshalb muss man sie in JavaScript zum dynamischen Schreiben auch so ansprechen:
        document.Layername.document.write...
        (weil Netscape Layerinhalte wie eigene Dokumente behandelt, haben sie auch ein eigenes document-Objekt). Wenn Du auf diese Weise in einen Layer "<HTML><HEAD><TITLE>..." schreibst, gilt das eben nicht fuer die HTML-Datei, in der der Layer notiert ist, sondern nur fuer den Inhalt des Layers.

        Natuerlich kannst Du auch auf normaler Dokumentebene mit den JavaScript-Befehlen document.clear(); document.open(); und document.write(....) wieder voellig neues Zeugs ins Hauptanzeigefenser schreiben, unter anderem natuerlich auch "<TITLE>...</TITLE>". Nur ist das wohl ein wenig viel Aufwand, eine ganze Seite mit JavaScript neu zu schreiben, nur um einen anderen Titel zu haben<g>.

        viele Gruesse
          Stefan Muenz

        1. document.Layername.document.write...

          gut das zweite document war mir vor freue entfallen, aber wenn jedes layer ein extra document ist, warum wird dann wenn ich in einem layer (im document) mit layer.src=cgi-dings und dort der Titel tag geschrieben wird - der titel der seite geändert? das wäre dann doch ein wiederspruch?

          (und das mit der seite ganz neu aufbauen ist mir auch klar)

          -Jürgen (irgendwann bekomme ich den Netscape noch dazu das zu machen was ich will! und wenn ich die Version 5.0 selber schreiben muß)

          1. document.Layername.document.write...
            gut das zweite document war mir vor freue entfallen, aber wenn jedes layer ein extra document ist, warum wird dann wenn ich in einem layer (im document) mit layer.src=cgi-dings und dort der Titel tag geschrieben wird - der titel der seite geändert? das wäre dann doch ein wiederspruch?

            Scheint wohl ein Bug zu sein, der Ausnahmsweise mal eher von Vorteil ist... wahrscheinlich hat Netscape gar nicht daran gedacht, daß jemand <HEAD>-Tags in einem Layer verwenden könnte...

            -Jürgen (irgendwann bekomme ich den Netscape noch dazu das zu machen was ich will! und wenn ich die Version 5.0 selber schreiben muß)

            Kein Problem... dazu gibt's ja http://www.mozilla.org... :)

            PS: exec("shell-Befehl") gibt's in Perl...
            Für Dich ist wahrscheinlich auch die Möglichkeit, Pipes zu verwenden ( open(DB,"sqlscript|"); ) recht interessant...

            Ciao,
            Mirko

            1. wenns ne SQL Datenbank waere... SQL ist dafür leider nicht leichtungsfähig genug...

              wir nehmen Adabas ;-)

              -Jürgen

    2. Dennoch interessant. Vielleicht verraetst Du uns mal mehr ueber den Einsatz von Unix Shellscript als CGI-Sprache!

      viele Gruesse
        Stefan Muenz

      Wie meinst Du das Stefan? (Wenn ich das einführend und zur Vermeidung von Mißverständnissen fragen darf!)

      'ksh' scripts, 'awk' scripts kann man - ich habe eigentlich Skrupel das hier so platt zu sagen - genauso selbstverständlich ausführen wie perl scripts.

      Klar, das die Shell jeweils installiert sein muß und das script im CGI Verzeichnis liegen muß(, da kann ja auch ein 'c' Programm gestartet werden.)

      D.h.: Also bei Win9x Rechnern mit Webserver und cgi Schnittstelle, sollt man auch ohne weiteres *.bat Befehlssätze starten können (Ich hab's nicht probiert, weil's wegen Perl keine Veranlassung dazu gibt).

      Aber in Perl unter LINUX ist z.B. ein

      $verzeichnisinhalt = ls;

      manchmal Gold wert .... ;) Da benutzt man ja praktisch auch shell Befehle.

      Vorstehendes hoffentlich nicht 'zu' selbstverständlich & Grüße aus Bonn
      Bo

      1. Klar, das die Shell jeweils installiert sein muß und das script im CGI Verzeichnis liegen muß(, da kann ja auch ein 'c' Programm gestartet werden.)

        Ob das Programm funktioniert, liegt primär am verwendeten Server-Programm und dessen Einstellungen.
        Zunächst einmal muß der Webserver natürlich erstmal generell die Ausführung von cgi's erlauben (was übrigens nur noch *sehr* selten auf ein CGI-Verzeichnis beschränkt ist).
        Wesentlich entscheidenter (und die häufigste Fehlerursache), ist, daß er auch wissen muß, welche Erweiterungen denn überhaupt Programme sind.
        Normalerweise sind hier .EXE, .BAT und .*sh aus Sicherheitsgründen nicht eingetragen!
        Bei Apache läßt sich das mit einer .htaccess - Datei mit dem Eintrag:
        AddHandler cgi-script .sh
        (oder welche Extention auch immer) machen.

        Aber Vorsicht bei EXEn: Sonst laufen irgendwann 10.000 Setup-Programme auf dem Server...

        D.h.: Also bei Win9x Rechnern mit Webserver und cgi Schnittstelle, sollt man auch ohne weiteres *.bat Befehlssätze starten können (Ich hab's nicht probiert, weil's wegen Perl keine Veranlassung dazu gibt).

        Eigentlich schon. Hab' ich auch noch nicht probiert...

        Aber in Perl unter LINUX ist z.B. ein
        $verzeichnisinhalt = ls;
        manchmal Gold wert .... ;) Da benutzt man ja praktisch auch shell Befehle.

        Das ist aber wieder was anderes...

        Ciao,
        Mirko