JavaScript und Firefox geht nicht
Kaiser38fuenf
- javascript
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 = " "" + document.Formular.Phrase.value + """
}
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ö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örter aus der Suche <b>ausschließ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öschen">
</form>
</p>
</body>
</html>
Vielleicht kann mir jemand einen Tipp geben woran es liegt. Schon einmal vielen Dank für jede Hilfe!
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.
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?
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.