wolli: document.open() was mach ich falsch

hallo Leute,

hab das Problem, das Netzcape nach dem alert behauptet 'ziel' sei nicht definiert.
IE führt das script ohne Fehlermeldung aus.

was mache ich falsch ??

<html><head><title>Test</title>
</head><body onload=" at_und_subDomains()">
<script>
<!--
function at_und_subDomains() {
   ziel = document.URL;
   ziel = ziel.replace(/www./,"");
   ziel = ziel.replace(/http:///,"");
   ziel = ziel.replace(///,"");
   ziel = ziel.replace(/@/,".");

alert (ziel);
 document.open;
      document.writeln('<frameset framespacing="0" rows="100%,*" border="0" frameborder="0">');
      document.writeln('<frame scrolling="auto" noresize src=/'+ziel+' target="_self">');
      document.writeln('</frameset>');
 document.close();
}

//-->
</script>
</body></html>

  1. Hi

    hab das Problem, das Netzcape nach dem alert behauptet 'ziel' sei nicht definiert.
    IE führt das script ohne Fehlermeldung aus.

    document.writeln('<frame scrolling="auto" noresize src=/'+ziel+' target="_self">');

    Ich denke mal, der Wert für src sollte auch in Anführungszeichen stehen :-)

    Ciao,

    Harry

  2. Hallo wolli!

    was mache ich falsch ??

    Du benutzt Javascript.

    Bau dein Ziel erst in einer Variablen zusammen und gebe die dann 'in eins' aus. Ansonsten löscht das erste document.writeln() nach dem document.open() das ganze Dokument und zwar inklusive des Scriptteils und deiner Variablen 'ziel'.

    doctext='<frameset framespacing="0" rows="100%,*" border="0" frameborder="0">\n';
    doctext+='<frame scrolling="auto" noresize src="/'+ziel+'" target="_self">\n';
    doctext+='</frameset>';

    document.open;
    document.writeln(doctext);
    document.close;

    Noch besser ist es, dass Script in ein extra Frameset aussendrum zu packen, dann hast du dieses Problem nicht. (document.write ins eigene document nach/bei onLoad() zickt gerne rum.)

    Gruss,
     Carsten

    1. Hallo Carsten,

      Danke für dein doctext Tipp funzt wunderbar :-)
      Aber "

      was mache ich falsch ??
      Du benutzt Javascript."

      war unüberlegt !!!

      Es gibt KEINE!! serverseitige Programiersprache
      Die die komplette URLzeile auslesen kann.
      und wenn man @Domains einsetzen will zB.
      http://wolli@llesklar.de
      Dann kann man wolli@llesklar.de nur mit javascript auslesen.

      Abgesehen davon ob ein @Zeichen in die URL gehören dürfen oder nicht.
      Aber das wurde hier im Forum ja schon breitgetreten.
      Es funzt und wird von Strato und Puretec eingesetzt.
      Und das will ich meinen Usern eben auch anbieten.

      Danke nochmals
      Gruß
      wolli

      Bau dein Ziel erst in einer Variablen zusammen und gebe die dann 'in eins' aus. Ansonsten löscht das erste document.writeln() nach dem document.open() das ganze Dokument und zwar inklusive des Scriptteils und deiner Variablen 'ziel'.

      doctext='<frameset framespacing="0" rows="100%,*" border="0" frameborder="0">\n';
      doctext+='<frame scrolling="auto" noresize src="/'+ziel+'" target="_self">\n';
      doctext+='</frameset>';

      document.open;
      document.writeln(doctext);
      document.close;

      Noch besser ist es, dass Script in ein extra Frameset aussendrum zu packen, dann hast du dieses Problem nicht. (document.write ins eigene document nach/bei onLoad() zickt gerne rum.)

      Gruss,
      Carsten

      1. Es gibt KEINE!! serverseitige Programiersprache
        Die die komplette URLzeile auslesen kann.

        Sondern? Ich meine, wer sonst, wenn nicht der Server, muß über die gewünschte URL denn komplett bescheid wissen? Wenn du serverseitig arbeiten kannst, dann mach das.

        und wenn man @Domains einsetzen will zB.
        http://wolli@llesklar.de
        Dann kann man wolli@llesklar.de nur mit javascript auslesen.

        Es gibt keine @-Domains. Das ist ein Marketing-Schwachfug von Strato und Puretec, die haben das so genannt, sagen aber auch ganz klar, daß es nicht überall funktioniert.

        Hier wird ein undokumentiertes Feature einiger Browser ausgenutzt, in der URL-Zeile gleich Username und Paßwort mitzusenden.

        Abgesehen davon ob ein @Zeichen in die URL gehören dürfen oder nicht.

        Das ist der Punkt: Es gibt für HTTP kein Schema, den Usernamen mitzuschicken. Es ist einfach nicht definiert. Also gehören @-Zeichen nicht in die URL, zumindest nicht in den Bereich des Hostnamens.

        Aber das wurde hier im Forum ja schon breitgetreten.
        Es funzt und wird von Strato und Puretec eingesetzt.
        Und das will ich meinen Usern eben auch anbieten.

        Es gibt so viel schönere Möglichkeiten, einen ähnlichen Effekt standardkonform hinzukriegen:

        • Echte Subdomains  (http://wolli.llesklar.de)
        • Unterverzeichnisse (http://www.llesklar.de/wolli)
        • Unterverzeichnisse als Shortcut (http://www.llesklar.de/wolli, führt aber per Redirect zu einer komplizierteren URL)
        • Script-gestützte Weiterleitung (http://www.llesklar.de/?wolli, das index-Skript wertet aus, wohin es gehen soll).

        - Sven Rautenberg

        1. Hallo Sven,

          du hast ja schon recht.
          @domains sind schwachsinn
          Meine User haben ja schon echte subdomains in Ihren Accounts.
          Aber etliche hätten halt auch gerne @domains.
          Soll ich zu denen sagen, dann geht halt zu strato ??
          nein!!
          also bastle ich eine Perl/Javascript Kombination zusammen,
          welche immer auf das user Unterverzeichnis zB./wolli.gigatrack.de weiterleitet.
          egal, ob du nun wolli@gigatrack.de oder wolli.gigatrack.de
          eingibst.

          Das ergebnis funzt zwar, hat aber noch einen kleinen Schönheitsfehler

          Denn Netscape gibt den Quelltext in einer Zeile aus ohne Umbruch:
          ....
                doctext  =('<frameset framespacing="0" rows="100%,*" border="0" frameborder="0">');\n
                doctext+=('<frame scrolling="auto" noresize src="'+ziel+'" target="_self">');\n
                doctext+=('</frameset>');\n

          document.open;
                document.write (doctext);
           document.close();
          ......

          hat jemand eine Idee
          Gruß
          wolli

          1. Hallo wolli!

            Denn Netscape gibt den Quelltext in einer Zeile aus ohne Umbruch:
            ....

            »»

            doctext  =('<frameset ...rder="0">\n');
                                                ^^^-- das \n gibt einen
            Zeilenumbruch aus, muss dazu aber innerhalb des Strings stehen,
            ausserhalb (so wie es bei dir war) ist es etwas merkwürdig.

            Gruss,
             Carsten

            1. Hallo carsten!

              doctext  =('<frameset ...rder="0">\n');
                                                  ^^^-- das \n gibt einen
              Zeilenumbruch aus, muss dazu aber innerhalb des Strings stehen,

              bringt ne fehlermeldung
              http://wolli.gigatrack.de

              Gruß
              wolli

          2. Meine User haben ja schon echte subdomains in Ihren Accounts.
            Aber etliche hätten halt auch gerne @domains.

            Also entweder kannst du ihnen echte Subdomains anbieten, oder nicht. Wenn du das kannst, dann mach es, und zwar immer.

            Ich kann mir kaum vorstellen, daß Kunden explizit nach @-Domains verlangen, wenn sie auch echte Subdomains haben können. Ansonsten red' ihnen das aus mit Hinweis auf die Probleme, die damit entstehen.

            Nur wenn du wirklich arm dran bist, dir garnichts leisten kannst und auch keine Subdomains kriegen kannst, weil das bei deinem übergeordneten Provider extra kostet, dann gibts ... erstmal Weiterleitungen mit .htaccess, dann URL-Parameter mit einem Script, und dann lange später erst @-Domains.

            - Sven Rautenberg