z4phod: "pseudo-passwort" funktioniert in firefox, aber nicht im IE6

hallo,
ich habe heute mal die selfhtml seite ein wenig nach einfachen paswort-codes durchforstet und bin dabei auf die javascript-version mit der if-verzweigung gestoßen.
habe alles in meinem sinne "modifiziert", klappte alles wunderbar.
nur der mein Internet Explorer streikt immer noch und mir gehen die ideen aus (ich habe das gefühl, dass IE einfach aktualisiert, wenn ich das kennwort eingebe, da die seite neu aufgebaut wird).
vllt hab ich ja iwo einen patzer drin, deswegen hier der code:

<head>
 <title>[...]</title>
  <script type="text/javascript">
   <!--
    function passwortabfrage (eingabe) {
     var passwort = "heldenzeit"
     if (eingabe != passwort) {
      alert("Falsches Passwort!");
     }
     else {
      location.href = "index.html"
     }
    }
   //-->
  </script>
</head>
[...]
<form action="http://texelblues.te.funpic.de/passwort.html" name=passwort>
 Passwort eingeben:
  <input type=password name=pw>
  <input type=submit value="OK" onClick="passwortabfrage(document.passwort.pw.value); return false">
</form>

sieht einer meinen fehler?

danke im vorraus,
z4phod

  1. Hallo z4phod,

    var passwort = "heldenzeit"

    Semikolon fehlt (bzw. wäre zwar weglassbar, ist aber dennoch sinnvoll)

    location.href = "index.html"

    hier ebenso.

    <form action="http://texelblues.te.funpic.de/passwort.html" name=passwort>

    "passwort" sollte in Anführungszeichen

    <input type=password name=pw>

    Hier ebenfalls beides in Anführungszeichen

    <input type=submit value="OK" onClick="passwortabfrage(document.passwort.pw.value); return false">
    </form>

    Sollte es nicht document.forms.passwort.pw.value heißen? Genau kenne ich mich da aber auch nicht aus, ich würde es im zweifelsfall einfach über GetElementById() machen, da kann man nicht viel falsch machen. Ein Semikolon hinter "false" sähe IMHO auch noch gut aus, auch wenn es nicht zwingend erforderlich ist.

    Jonathan

  2. Hi z4phod,

    paar kleine Korrekturen:

    1. Du solltest das Formular auf die richtige Seite verweisen lassen. Sparst du dir auch das else und location.href in der Funktion.

    2. Formulare überprüfen besser mit onsubmit="return funktion()" im form oder submit tag.

    So sollte es laufen:

    <head>
    <script type="text/javascript">
    <!--
    function passwortabfrage() {
      if (document.passwort.pw.value != "heldenzeit") {
        alert("Falsches Passwort!");
        return false;
      }
    }
    //-->
    </script>
    </head>
    <body>
    <form action="http://texelblues.te.funpic.de/index.html" method="post" enctype="text/plain" name="passwort" onsubmit="return passwortabfrage()">
     Passwort eingeben:
      <input type=password name="pw" />
      <input type=submit value="OK" />
    </form>
    </body>

    Gruß
    Antipitch

    PS: Jonathan hat Recht mit Semikolon im JS und Anführungszeichen für HTML Attributwerte. Formular und den Wert hattest du aber schon richtig angesprochen.

    1. vielen dank!
      funktioniet einwandfrei. =]

      1. Moin Moin!

        funktioniet einwandfrei. =]

        Dann schalte mal Javascript aus, gibt als Password "2$T/P!|)" ein, und klicke auf den Submit-Button.

        Alexander

        --
        Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".
        1. tach,

          Dann schalte mal Javascript aus, gibt als Password "2$T/P!|)" ein, und klicke auf den Submit-Button.

          was erwartet mich dann? ein umgehen der abfrage?
          auch wenn ich daran zweifle, dass es gerade DIESE zeichenfolge ist, die das eis zum schmelzen bringt^^

          zur bedeutung des passworts: wir sind halt nicht alle vollzeit-||€R|)$, ums in deiner sprache auszudrücken ;)

          z4phod

          1. Hi z4phod,

            was Alexander damit sagern wollte, war, dass jemand ohne javascript auch ohne oder mit falschem Passwort zur index kommt. Alternative wäre allerdings ohne Javascript gar nicht zur Seite zu kommen. Angesichts eines Prozents ohne JS, deines Titels "Pseudo Passwort" und des ja nicht hochsensiblen Inhalts der Seite hielt ich bei meinem Vorschlag ersteres für besser.

            Den zweiten Weg erreichst du, indem du das location.href doch wieder in die Funktion nimmst. Dann solltest du das Formular ohne Javascript aber zumindest auf eine entsprechende Hinweisseite (Bitte JS aktivieren) schicken.

            Gruß
            Antipitch