torsten: history back plus alternativem link bei deaktivem javascript

moinsen leude!

ich habe einen link folgendermaßen definiert:

  
<script type="text/javascript">  
   /* <![CDATA[  */  
      document.write("  
         <a id='lang_de' href='javascript:history.back()'>  
         <img src='_picz/flag_de.gif' width='24' height='15' alt='sprache wechseln' title='' />  
         </a>  
      "); /* ]]> */  
</script>  
  
<noscript>  
   <a id="lang_de" href="start2.html">  
      <img src="_picz/flag_de.gif" width="24" height="15" alt="sprache wechseln" title="" />  
   </a>  
</noscript>  

ich bin nicht der meinung, daß dies sehr elegant ist aber letztlich ist´s nicht meine eigentliche hürde...

sinn soll sein, bei deaktivem javascript im browser einen alternativen link auf die startseite zur verfügung zu stellen. allerdings deckt das noch nicht folgendes problem ab:

wenn der visitor von einer externen seite oder aus einem lesezeichen einsteigt, dann bewirkt der history back link einen sprung zurück nach extern oder garnix...

wie kann ich dem script erklären, daß es die history überprüfen soll und wenn da bereits die stammseite eingetragen ist, dann prima und wenn nicht dann zur startseite...

ich hoffe, das ist einigermaßen verständlich, danke im voraus für eure antworten...

(ich hab schon mal einiges zum thema referrer gelesen und verstanden, daß der nicht korrekt oder vorhanden sein muß und würde eine bessere lösung bevorzugen)

mfg torsten

  1. Moin

    wie kann ich dem script erklären, daß es die history überprüfen soll

    gar nicht, die history lässt sich nicht auslesen.

    Gruß
    rfb

    --
    Man kann einen Menschen nichts lehren, man kann ihm nur helfen, es selbst zu entdecken.
    (Galileo Galilei)
    1. moin rfb!

      ok, nicht auslesen aber doch benutzen, ich hab zwar keinen schimmer wie aber history back greift doch direkt auf diese zu, oder? kann man damit nix anfangen? vielleicht einen unsichtbaren "back" und das ergebnis auslesen oder sowas wirres?

      mfg torsten

      1. Hallo!

        ok, nicht auslesen aber doch benutzen, ich hab zwar keinen schimmer wie aber history back greift doch direkt auf diese zu, oder? kann man damit nix anfangen? vielleicht einen unsichtbaren "back" und das ergebnis auslesen oder sowas wirres?

        Ich bin mir nicht sicher, aber ich glaube, dass man, wenn man sie ausliest, nur Zahlen erhält. Aber keine Adressen, die dir weiterhelfen würden.

        Du könntest allerdings auf der Startseite ein Cookie setzen und dann auf der anderen überprüfen, ob dieser Cookie existiert.

        ciao, ww

        --
        sh:(  fo:|  ch:~  rl:(  br:>  n4:~  ie:%  mo:)  va:)  de:]  zu:)  fl:(  ss:|  ls:~  js:)
        1. hi ww!

          Du könntest allerdings auf der Startseite ein Cookie setzen und dann auf der anderen überprüfen, ob dieser Cookie existiert.

          hm, ist ne alternative! ich würde allerdings gern bei javascript bleiben um die fehlerquote einzugrenzen, viele haben zusätzlich zum js auch noch cookies unter kontrolle oder deaktiviert.

          thx torsten

          1. Hallo!

            hm, ist ne alternative! ich würde allerdings gern bei javascript bleiben um die fehlerquote einzugrenzen, viele haben zusätzlich zum js auch noch cookies unter kontrolle oder deaktiviert.

            Wenn es ohne Cookies funktionieren soll, dann findest du hier etwas:

            http://aktuell.de.selfhtml.org/artikel/javascript/wertuebergabe/
            http://aktuell.de.selfhtml.org/artikel/javascript/wertuebergabe-2/

            ciao, ww

            --
            sh:(  fo:|  ch:~  rl:(  br:>  n4:~  ie:%  mo:)  va:)  de:]  zu:)  fl:(  ss:|  ls:~  js:)
            1. hallo ww!

              also...

              offensichtlich muß man extrem schlau sein um das zu durchdringen :o) wenn ich recht verstehe muß man "nur" die url auslesen, den wert übergeben damit dynamisch einen link generieren der den übergebenen wert enthält und eine alternative schaffen wenn die übergebene url bestimmte parameter nicht enthält gell?

              leider beschränken sich meine js fähigkeiten auf außerordentlich rudimentäre kenntnisse... ich bräuchte ne unmenge hilfe...

              mfg torsten

            2. moin!

              ich habe mir hier
               die wertübergabe mittels url rausgesucht und alles zusammengestutzt so gut ich kann, leider gibts da noch einiges an klärungsbedarf...

              im ursprungsdokument verwende ich folgendes:

                
              <form name="Formular" action="wtue21_1.htm" method="get" target="_self">  
              <input name="" value="start2.html" type="hidden">  
              <input type="submit">  
              </form>  
              
              

              im zieldokument verwende ich dies:

                
              <html>  
              <head>  
              <title></title>  
                
              <script type="text/javascript">  
                 <!--  
                  var formular = new Array(0);  
                  decode();  
                
              /* Diese Funktion decodiert die Angaben im Pfad */  
                function decode()  
                 {  
                  var url = window.location.search ;                                // Die Daten werden aus der  
                
                
                  if (url != "")  
                  {  
                   url = url.substring(1,url.length);                            // Url extrahiert  
                
                   liste = url.split("&");                                           // Feld-Wertepaare trennen  
                   for (i=0;i<=liste.length-1;i++)  
                   {  
                    temp = liste[i].split("=");                                     // Feld und Daten jedes  
                    formular.splice(formular.length,2,temp[0],temp[1]);             // Paares trennen  
                   }  
                   for (i=0;i<=formular.length-1;i++)  
                   {  
                    formular[i] = formular[i].replace(/\+/g,"");                    // Ersetzen des + durch Blank  
                    while (formular[i].search(/(%[A-F0-9][A-F0-9])/)+1)              // Escapesequenzen rekonstruieren  
                      formular[i] = formular[i].replace(/(%[A-F0-9][A-F0-9])/,unescape(RegExp.$1));  
                   }  
                  }  
                  else  
                  {  
                   formular[0] = "";  
                   formular[1] = "";  
                  }  
                 }  
               //-->  
              </script>  
              </head>  
              <body>  
                
                <script>  
                 <!--  
                  for (var i=0;i<formular.length;i++)  
                  {  
                   document.write("<a id='lang_de' href='" + formular[++i] + "'><img src='flag_en.gif' width='24' height='15' alt='' title='' /></a>");  
                  }  
                 //-->  
                </script>  
                
              </body></html>  
              
              

              sicher ist das js-script zu "wuchtig" weil ich von den möglichkeiten der funktionen nur einen teil benötige... wie kann ich das teil also anpassen? *grübel*

              und wenn ich als "submit" einen grafischen button verwende:

                
              <form name="Formular" action="wtue21_1.htm" method="get" target="_self">  
              <input name="" value="start2.html" type="hidden">  
              <input type="image" src="flag_en.gif">  
              </form>  
              
              

              dann wird beim auslesen im zieldokument immer an die url "&x=13&y=9" angehängt, was dann als "x13 y9" interpretiert wird... wie kommt das? was muss ich machen um das script dahingehend zu ändern, dass sende-input als grafischer button verwendet werden kann?

              über unterstützung würde ich mich freuen...

              mfg torsten

              1. sicher ist das js-script zu "wuchtig" weil ich von den möglichkeiten der funktionen nur einen teil benötige... wie kann ich das teil also anpassen? *grübel*

                Wenn du sicher sein kannst, dass die Seite der *einzige* Parameter ist, der übergeben werden kann, genügen die einfachen Stringfunktionen:

                var qs = window.location.search;  
                var test = qs.substr(qs.indexOf('=')+1);
                

                Sei dir aber der Fehleranfälligkeit bewusst, falls doch mehr als ein Parameter übergeben werden. Wie wäre es statt dessen mit meinem Vorschlag?

                und wenn ich als "submit" einen grafischen button verwende [...] dann wird beim auslesen im zieldokument immer an die url "&x=13&y=9" angehängt, was dann als "x13 y9" interpretiert wird... wie kommt das?

                Das sind die Klickkoordinaten, also die Position, wo sich der Mauszeiger beim Klicken auf den Button befand.

                was muss ich machen um das script dahingehend zu ändern, dass sende-input als grafischer button verwendet werden kann?

                Das Kapitel Klick-Buttons kennst du doch sicher, oder?

                Siechfred

                --
                Ich bin strenggenommen auch nur interessierter Laie. (molily)
                1. moin siechfried!

                  Das sind die Klickkoordinaten, also die Position, wo sich der Mauszeiger beim Klicken auf den Button befand.

                  was muss ich machen um das script dahingehend zu ändern, dass sende-input als grafischer button verwendet werden kann?

                  Das Kapitel Klick-Buttons kennst du doch sicher, oder?

                  klar kenn ich das *ggg* sonst hätte ich doch nicht herausgefunden, daß das script diese koordinaten dran bommelt ;o) ich hätte die frage anders formulieren müssen! was muß ich machen, damit die koordinaten nicht mit übergeben werden (<-aber zu dem zeitpunkt war mir noch garnicht bewußt daß es welche sind...)

                  danke erst mal für deine antwort... den rest zieh ich mir nacher rein (wenn ich das heute noch schaffe)

                  mfg torsten

                2. moin!

                  Wenn du sicher sein kannst, dass die Seite der *einzige* Parameter ist, der übergeben werden kann...
                  Sei dir aber der Fehleranfälligkeit bewusst, falls doch mehr als ein Parameter übergeben werden. Wie wäre es statt dessen mit meinem Vorschlag?

                  hm, ok, sag niemals nie... sicher ist ein wenig flexibelität nicht verkehrt.

                  dein script funktioniert auch wie es soll nehme ich an (leider kann ich das nicht beurteilen weil ich es nicht so recht verstehe) aber leider habe ich noch immer meine zwei probleme...

                  wenn statt einem <input type="submit"> (<-alles geht ganz prima) ein <input type="image" src="x.gif"> verwendet wird, werden die klick-koordinaten mit übermittelt, was bei der auswertung zu einer fehlinterpretation führt... man müsste eigentlich nur die letzten zwei mal "&" im übermittelten wert abschneiden (&x=13&y=13 da es die mausklickkoordinaten sind weiß man ja nur ungefähr wo das stattfindet die numerische angabe könnte auch drei oder vierstellig sein) am besten wäre es natürlich wenn die koordinaten garnicht erst interpretiert würden...

                  zudem fürchte ich, das folgende zeile im script bedeutet, wenn keine auslesbaren daten da sind, dann mach auch nix! (um es mal für mein schlichtes gemüt zu erläutern)

                  if(querystring == '') return;

                  jetzt hätte ich gern statt return einen festen wert, eine url, die verwendet wird wenn nichts übergeben wird... wie in aller welt macht man das?

                  hÜÜÜÜÜlfeee! :o)

                  im moment sieht die ursprungsseite mit deinem script so aus:

                    
                  <html>  
                  <head>  
                  <title></title>  
                  </head>  
                  <body>  
                  <form name="Formular" action="siechfried.html" method="get" target="_self">  
                  <input name="" value="http://www.jungmann.net/start2.html" type="hidden">  
                  <input type="image" src="flag_en.gif">  
                  </form>  
                  </body></html>  
                  
                  

                  und die zielseite hat folgenden inhalt (hab praktisch nix am script geändert)

                    
                  <html>  
                  <head>  
                  <title></title>  
                  <script type="text/javascript">  
                     <!--  
                  function Werteliste(querystring) {  
                    if(querystring == '') return;  
                    var wertestring = unescape(querystring);  
                    wertestring = wertestring.slice(1);  
                    var paare = wertestring.split("&");  
                    for (var i=0; i < paare.length; i++) {  
                      var name = paare[i].substring(0, paare[i].indexOf("="));  
                      var wert = paare[i].substring(paare[i].indexOf("=")+1, paare[i].length);  
                      this[name] = wert;  
                    }  
                  }  
                  var liste = new Werteliste(window.location.search);  
                  -->  
                  </script>  
                  </head>  
                  <body>  
                  <script>  
                     <!--  
                  for( eigenschaft in liste ) {  
                       document.write("<a id='lang_de' href='" + eigenschaft+liste[eigenschaft] + "'><img src='flag_en.gif' width='24' height='15' alt='' title='' /></a>");  
                      }  
                     //-->  
                    </script>  
                  </body></html>  
                  
                  

                  in zeile zwei der funktion hab ich versucht das return mit einem document.write(); zu ersetzen um den fixwert (url) zu erzielen aber dann  hab ich alles doppelt... das geht aaach ned :o(

                  greetz der torsten

      2. Moin

        nein, das geht generell nicht. Du kannst history nicht auslesen (wäre auch ein Einbruch in meine Privatsphäre - deine Scripte geht es nüscht an wo ich vorher rumgesurft bin), du kannst nur versuchen darin zurückzuspringen. In diesem Moment wird mit dem Verlassen deiner Seite natürlich auch dein Script sofort beendet. Du kannst auch nicht über irgendwelche target-Attribute oder sowas die Sprungziele aus der history woandershin laden und dann Infos auslesen.
        Deine einzige Info-Quelle ist referrer!

        Gruß
        rfb

        --
        Man kann einen Menschen nichts lehren, man kann ihm nur helfen, es selbst zu entdecken.
        (Galileo Galilei)
  2. hi,

    sinn soll sein, bei deaktivem javascript im browser einen alternativen link auf die startseite zur verfügung zu stellen.

    Und wozu soll die JS-Alternative gebraucht werden?

    Warum setzt du nicht einfach im HTML einen Link auf die Startseite, und kümmerst dich überhaupt nicht um Irgendetwas, was sich Javascript nennen mag?

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. tach!

      Warum setzt du nicht einfach im HTML einen Link auf die Startseite, und kümmerst dich überhaupt nicht um Irgendetwas, was sich Javascript nennen mag?

      hm, ich weiß noch nicht ob das ne gute frage ist ;-) weil, sofern man auf die betreffende seite wechselt, man nicht unbedingt auf die startseite will, die man schon mal gesehen hat. das ist unkomfortabel denke ich, insbesondere da die startseite mehr weniger inhalt hat... der alternative link ist ja da sofern man kein "no script" nutzt oder js inaktiv ist *ggg*

      ich will aber nicht behaupten, das es keine spielerei ist.

      mfg torsten