Kaiser38fuenf: JavaScript und Firefox geht nicht

Hallo,

ich habe folgenden HTML / Java - Code geschrieben. Diese HTML Seite stellt eine vereinfachte Suchmaske für IBM OmniFind Yahoo Edition (Freeware) dar.

Im Internetexplorer wird das Javascript richtig ausgeführt aber Firefox macht Probleme. Die Suche nach Wortgruppen und nach auszuschliessenden Wörtern wird von FF einfach ignoriert.

Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>IBM OmniFind - erweiterte Suche</title>
<meta name="description" content="erweiterte Suche - IBM OmniFind Yahoo Edition">
<meta name="author" content="Kaiser38fuenf">
<meta name="keywords" content="erweiterte Suche">

<script type="text/javascript">

function Suche ()
 {

if (document.Formular.Include.value == "")
    {
     var Include = ""
     }
  else
      {
       var Include = document.Formular.Include.value
       }

if (document.Formular.Filename.value == "")
    {
     var Filename = ""
     }
  else
      {
       var Filename = " title:(" + document.Formular.Filename.value + ")"
       }

if (document.Formular.Phrase.value == "")
    {
     var Phrase = ""
     }
  else
      {
       var Phrase = " &quot;" + document.Formular.Phrase.value + "&quot;"
       }

if (document.Formular.Exclude.value == "")
    {
     var Exclude = ""
     }
  else
      {
       var ExcludeTemp = " " + document.Formular.Exclude.value
       var Exclude = ExcludeTemp.replace(/ /g, " -")
       }

if (document.Formular.rDocType[0].checked == true) var DocType = "";
  if (document.Formular.rDocType[1].checked == true) var DocType = "doctype:PDF ";
  if (document.Formular.rDocType[2].checked == true) var DocType = "doctype:DOC ";
  if (document.Formular.rDocType[3].checked == true) var DocType = "doctype:XLS ";

var Suchanfrage = DocType + Include + Filename + Phrase + Exclude

location="http://suchsrv/search/?query=" + Suchanfrage
 }

</script>
</head>
<body>

<a href="http://...LINK.../SucheHilfe.html"><img src="...BildLINK.../hilfe.jpg" width="24" height="36" align="right" border="0" alt="Hilfe"></a>

<p style="font-family:Arial,sans-serif; font-size:13px;">
   <form name="Formular">

Nach folgenden <b>W&ouml;rtern suchen</b>:
       <br>
            <input type="text" name="Include" size="86">
       <br>
       <br>

Nach folgenden <b>Dateinamen</b> suchen:
       <br>
            <input type="text" name="Filename" size="86">
       <br>
       <br>

Nach folgender <b>Wortgruppe suchen</b>:
       <br>
            <input type="text" name="Phrase" size="86">
       <br>
            <input type="radio" name="rDocType" value="Alle" checked>alle Dokumente</input>
            <input type="radio" name="rDocType" value="PDF">nur PDF-Dokumente</input>
          <input type="radio" name="rDocType" value="DOC">nur Worddokumente</input>
          <input type="radio" name="rDocType" value="XLS">nur Exceldokumente</input>
       <br>
       <br>
       <br>
       Folgende W&ouml;rter aus der Suche <b>ausschlie&szlig;en</b>:
       <br>
            <input type="text" name="Exclude" size="42">
       <br>
       <br>
            <input type="button" value="Suche starten" onclick="Suche()">
            <input type="reset" value="Eingabe l&ouml;schen">
   </form>
</p>

</body>
</html>

Vielleicht kann  mir jemand einen Tipp geben woran es liegt. Schon einmal vielen Dank für jede Hilfe!

  1. Im Internetexplorer wird das Javascript richtig ausgeführt aber Firefox macht Probleme. Die Suche nach Wortgruppen und nach auszuschliessenden Wörtern wird von FF einfach ignoriert.

    und keine Fehlermeldung in der Fehlerkonsole?

    Struppi.

    --
    Javascript ist toll (Perl auch!)
    1. Im Internetexplorer wird das Javascript richtig ausgeführt aber Firefox macht Probleme. Die Suche nach Wortgruppen und nach auszuschliessenden Wörtern wird von FF einfach ignoriert.

      und keine Fehlermeldung in der Fehlerkonsole?

      Struppi.

      In der Fehlerkonsole des FF wird nichts über das JavaScript von mir protokoliert.

      Nur Fehler die von IBM OmniFind Yahoo Edition gemacht werden.

      Wenn ich den Suchstring manuel über die IBM Oberfläche (HTML) eingebe wird die gleiche Suche richtig ausgeführt, bei der generierung des Links stimmt also was nicht.

      Wenn ich am Ende meines Javascripts den Befehl location.... weglösche steht im Fehlerprotokoll auch nichts drin.

      Hat jemand eine Idee?

  2. Im Internetexplorer wird das Javascript richtig ausgeführt aber Firefox macht Probleme. Die Suche nach Wortgruppen und nach auszuschliessenden Wörtern wird von FF einfach ignoriert.

    kann ich nicht nachvollziehen, im FF 2.x wird alles eingetragen.

    <script type="text/javascript">

    function Suche ()

    du könntest Skript wesentlich vereinfachen, wenn du hier die Referenz auf das Formular übergeben würdest. (und dir den Namen für das Formular sparen)

    <input type="button" value="Suche starten" onclick="Suche(this.form)">
    function Suche (form)

    und dann überall document.Formular mit form ersetzen.

    if (document.Formular.Include.value == "")

    Hier reicht i.d.R.: if (!document.Formular.Include.value)

    {
         var Include = ""
         }
      else
          {
           var Include = document.Formular.Include.value
           }

    das doppelte var ist zwar in JS erlaubt, aber IMHO nicht schön. In JS sind lokale Variabeln immer Funktionsweit lokal, im gegensatz zu anderen Programmiersprachen wo sie Blockweise lokal sind und so ein Konstrukt dann falsch wäre.

    Zumal du ja eigentlich nur sowas willst (ich hab hier schonmal form eingesetzt):
    var Include = form.Include.value || "";

    if else ist also überflüssig.

    if (document.Formular.Filename.value == "")
        {
         var Filename = ""
         }
      else
          {
           var Filename = " title:(" + document.Formular.Filename.value + ")"
           }

    und selbst sowas läßt sich schönder darstellen:

    var Filename = form.Filename.value ? " title:(" + form.Filename.value + ")" : '';

    if (document.Formular.Exclude.value == "")
        {
         var Exclude = ""
         }
      else
          {
           var ExcludeTemp = " " + document.Formular.Exclude.value
           var Exclude = ExcludeTemp.replace(/ /g, " -")
           }

    und hier kann man if verwenden, wobei mir nicht ganz klar ist was du mit replace erreichen willst. Aber dann so:
    var Exclude = ""
    if (!document.Formular.Exclude.value)
    {
            var ExcludeTemp = " " + document.Formular.Exclude.value
            Exclude = ExcludeTemp.replace(/ /g, " -")
    }

    if (document.Formular.rDocType[0].checked == true) var DocType = "";

    der Vergleich auf true ist auch überflüssig.

    location="http://suchsrv/search/?query=" + Suchanfrage

    Das ist Faulheit und geht vermutlich meistens, trotzdem würde ich des Verständiss wegen window.location.href benutzen.

    Allerdings Frage ich mich, warum du das mühsam mit JS zusammen baust und nicht den Browser selbst machen läßt?

    Struppi.

    --
    Javascript ist toll (Perl auch!)