Hans Glanz: Probleme mit script- Seitendarstellung

Hallo liebe Helfer,

für eine Intranetapplikation habe ich ein JScript geschrieben, das über ein Eintrag in einem Textfeld (HTML Formular) eine URL generiert und dann diese entsprechend im Browser anzeigt. (Über den Sinn dieses Scriptes brauchen wir bitte nicht reden ;-) ).

DH. Wenn der User in dem Textfeld seinen "Benutzernamen" (z.b. HGlanz) eingibt und das Formular abschickt, generiert Javascript eine URL aus "Benutzername" und sucht in einem vorgegebene Ordner "Mitarbeiter" nach einem Ordner "Benutzername" und in diesem eine "Benutzername".html Datei.(siehe Quelltext)

Die URL Mitarbeiter/Benutzername/Benutzername.html wird in einem neuen Fenster geöffnet. Das funktioniert auch einwandfrei und der Quellcode ist auch laut W3C Tentatively Valid ;).

Das Problem was ich jetzt habe ist, das die Seite von der das Formular verschickt wird, komischerweise nach dem Abschicken neu geladen wird und es dann eine FM kommt das die Datei ....[object] nicht gefunden wurde.

Ich weis nicht weiter, wer kann helfen ?

PS. wenn Ihr testen wollt müsst Ihr halt ein Ordner anlegen mit meiner Seite drinn und mit dem Ordner "Mitarbeiter". In diesem den Ordner "Benutzername" (zb. HGlanz) und in diesem Ordner dann die Datei "Benutzername.html" (z.b. HGlanz.html)

PPS. Ich hoffe es war verständlich geschrieben, hier der Quellcode:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
        "http://www.w3.org/TR/html4/loose.dtd">
<html>

<head>
<link rel="stylesheet" type="text/css" href="layout.css">
<title>Testscript Mitarbeiter</title>
<script type="text/javascript">
function sendForm()
{
 var url = document.getElementById('login').value;
 if ( url == "" )
 {
  alert("Bitte Benutzernamen eingeben");
  document.getElementById('form_data').action = window.location.href;
  document.getElementById('form_data').submit();
 }
 else
 {
  document.getElementById('form_data').action = window.open("Mitarbeiter/" + url + "/" + url + ".html", "Mitarbeiterlogin");
  document.getElementById('form_data').submit();
 };
 return false;
};

if (navigator.userAgent.indexOf("MSIE") < 0)
{
 function checkKey(Ereignis) { if (Ereignis.which==13) { sendForm(); }; };
 window.captureEvents(Event.KEYDOWN);
 window.onkeydown=checkKey;
};

</script>

<!--[if IE]>
<script type="text/javascript">
function checkKey()
{
 ev = window.event;
 if (ev.keyCode==13) { sendForm(); }
}
document.onkeydown=checkKey;
</script>
<![endif]-->

</head>

<body>
<div id="pagewidth" >

<div id="header" >
<table class="navi">
<tr>
<td><a href="index.htm">
<img src="logo.jpg" alt="logo"></a></td>
</tr>
<tr>
<td>
<table id="nav" class="nav">
<tr>
  <td class="spacer">&nbsp;</td>
  <td class="center">
  <a href="leistung.htm">Leistung</a></td>
  <td class="center">
  <a href="mitarbeiter.htm">Mitarbeiter</a></td>
  <td class="center">
  <a href="partner.htm">Partner</a></td>
  <td class="center">
  <a href="kontakt.htm">Kontakt</a></td>
  <td class="center">
  <a href="impress.htm">Impressum</a></td>
</tr>
</table>
</td>
</tr>
</table>
</div>

<div id="wrapper" class="clearfix" >
<div id="maincol" >

<table width="100%">
<tr>
<td>
<form id="form_data" method="post" action="dummy.html">
<fieldset>
<legend>Bitte geben Sie Ihren Benutzernamen ein</legend>
<label for="login">Benutzername <input tabindex="1" id="login" name="login" type="text" size="15" /></label>
<div><a href='javascript:sendForm();'>OK </a></div>
</fieldset>
</form>
</tr>
</table>

</div>

<div id="leftcol" >NEWS</div>
</div>
</div>
</body></html>

Mercy
Hans Glanz

  1. Hallo Hans,

    ein etwas allgemeinerer Rat:

    HTML-Formulare sind dafür gedacht, Daten zu sammeln und offen (get) oder versteckt (post) an ein CGI-Programm zu übergeben (submit).

    Wenn Du Eingabefelder nur benötigst, um sie per Javascript auszulesen, lass das Formular weg. "<input>" und Co. dürfen auch ohne <form> benutzt werden. Du musst dann zwar mit document.getElement... auf die Felder zugreifen (was Du ja schon machst), aber Du musst nicht mehr berücksichtigen, dass das Formular (ungewollt) abgeschickt wird.

    Ich durchblicke Dein Script jetzt nicht im Detail, aber ich glaube, dass Du so Dein Problem lösen kannst. Bei mir hat es geklappt.

    Gruß, Jürgen

    1. Ich durchblicke Dein Script jetzt nicht im Detail, aber ich glaube, dass Du so Dein Problem lösen kannst. Bei mir hat es geklappt.

      Gruß, Jürgen

      Hallo Jürgen

      Ich habe es auch schon probiert. Im FF funktioniert es dann einwandfrei, der IE zeigt dann aber FM "document.getElementById()'ist Null oder kein Objekt.

      mit welchem Browser hast Du getestet?

      Gruß, Hans

      1. hi,

        Ich habe es auch schon probiert. Im FF funktioniert es dann einwandfrei, der IE zeigt dann aber FM "document.getElementById()'ist Null oder kein Objekt.

        Und an welcher Stelle?

        Du hast den Code aber schon entsprechend angepasst - oder versuchst du dann immer noch über die ID auf das Formular zuzugreifen, welches du gerade entfernt hast ...?

        gruß,
        wahsaga

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

          Ich habe es auch schon probiert. Im FF funktioniert es dann einwandfrei, der IE zeigt dann aber FM "document.getElementById()'ist Null oder kein Objekt.

          Und an welcher Stelle?

          Du hast den Code aber schon entsprechend angepasst - oder versuchst du dann immer noch über die ID auf das Formular zuzugreifen, welches du gerade entfernt hast ...?

          gruß,
          wahsaga

          Hi wahsaga,

          natürlich habe ich noch auf die ID des Formular verwiesen ;-). Habe es geändert und kaum macht man es richtig, schon funktioniert es.

          Danke

          Hans Glanz

      2. Hallo Hans,

        mit welchem Browser hast Du getestet?

        ich habe noch nicht auf allen meinen Seiten das <form> verbannt, aber diese <form>-freie Seite http://www.j-berkemeier.de/Spiralen.html sollte in allen modernen Browsern funktionieren.

        Gruß, Jürgen