Klassmann: diffiziles Problem: lokal läuft's aber nicht auf dem Server

Hallo zusammen,

habe hier mal ein ganz komische Problem:
Ich öffne aus dem Browser heraus via link ein pop-up. In diesem Pop-up gibt es wiederum einen link, der eine HTML-Seite mit einem Formular in das Mutterfenster des Pop-ups läd...
soweit so unklar? ok, dann gehts weiter. Nachdem das Formular im Mutterfenster geladen ist, soll ein bestimmter Eintrag in dem dropdown Menü selektiert werden. Am Ende wird dann das popup geschlossen.

Das funktioniert lokal auch soweit alles sehr gut. Aber sobald ich das Script ins Netz stelle, habe ich das Problem, dass zwar das Formular im Mutterfenster geladen wird, aber weder der richtige Eintrag selektiert, noch das popup geschlossen wird. Klicke ich ein zweites Mal auf den link im Popup klappt es (meistens). Aber wer klickt da schon 2 mal drauf???

Hier ist mal mein Code. Die Funktion mutterfenster(zielURL) wird aufgerufen, wenn man im Popup auf besagten link drückt:

--
function mutterlink(zielURL) {
   opener.location.href = zielURL;
   opener.Formular.Produkte.selectedIndex = 3;
   if(self.close()) {
      self.focus();
   }
   else {}
}

---

Ich werde noch bekloppt hier. Tüftele schon seit einigen Stunden daran rum... Bin für jede Hilfe dankbar

Schonmal vielen vielen meric :-)

Peter

  1. hi,

    Ich öffne aus dem Browser heraus via link ein pop-up. In diesem Pop-up gibt es wiederum einen link, der eine HTML-Seite mit einem Formular in das Mutterfenster des Pop-ups läd...
    soweit so unklar?

    vollständig. Konstruktionen dieser Art gibts gelegentlich.

    Das funktioniert lokal auch soweit alles sehr gut. Aber sobald ich das Script ins Netz stelle, habe ich das Problem...

    Du solltest dir vielleicht auch lokal mal einen Webserver installieren (Apache  -  was sonst?), um solche Sachen durchzuspielen. Dann hast du in den logs gut auswertbare Fehlermeldungen, gerade auch für solche Fragestellungen.

    Hier ist mal mein Code

    ...

    if(self.close()) {
          self.focus();

    das dürfte die problematische Stelle sein.

    Um das aber genau nachzuprüfen, bräuchte man den vollständigen Code, inclusive HTML-Seite. Stell das doch mal in ein temp-Verzeichnis auf deiner (übrigens nett gemachten) Homepage und gib die Adresse dazu an. Ich möchte ganz einfach den von dir geschilderten Effekt selber sehen.

    Grüße aus Berlin

    Christoph S.

    1. Hallo Christoph,

      Ich öffne aus dem Browser heraus via link ein pop-up. In diesem Pop-up gibt es wiederum einen link, der eine HTML-Seite mit einem Formular in das Mutterfenster des Pop-ups läd...
      soweit so unklar?
      vollständig. Konstruktionen dieser Art gibts gelegentlich.

      Ja, so ähnlich dachte ich mir das beim verfassen auch :-)

      Das funktioniert lokal auch soweit alles sehr gut. Aber sobald ich das Script ins Netz stelle, habe ich das Problem...
      Du solltest dir vielleicht auch lokal mal einen Webserver installieren (Apache  -  was sonst?), um solche Sachen durchzuspielen. Dann hast du in den logs gut auswertbare Fehlermeldungen, gerade auch für solche Fragestellungen.

      Das habe ich schon alles getan, da ich auch php entwickle und den Server sowieso installiert habe (Xitami, was sonst :-))

      Hier ist mal mein Code
      ...
         if(self.close()) {
            self.focus();
      das dürfte die problematische Stelle sein.

      Um das aber genau nachzuprüfen, bräuchte man den vollständigen Code, inclusive HTML-Seite. Stell das doch mal in ein temp-Verzeichnis auf deiner (übrigens nett gemachten) Homepage und gib die Adresse dazu an. Ich möchte ganz einfach den von dir geschilderten Effekt selber sehen.

      mache ich dann, sobald ich wieder an meinem eigenen Rechner sitze. Ich schreibe Dir dann eine email.
      Auf die if-Abfrage habe ich es zuerst auch geschoben. Habe die dann erstmal komplett weggelassen (inkl. self.close() und self.focus() ). Hat das Problem leider nicht behoben. Meine damit, dass die Seite zwar geladen wird, aber das dropdown menu wird erst beim 2. Klick aktualisiert...

      Naja wie auch immer. Entweder schreibe ich Dir eine email oder poste nochmal hier in den Thread...

      Vielen Dank schonmal und schöne Grüße aus Trier

      Peter

      Grüße aus Berlin

      Christoph S.

  2. Hi,

    --
    function mutterlink(zielURL) {
       opener.location.href = zielURL;
       opener.Formular.Produkte.selectedIndex = 3;
       if(self.close()) {
          self.focus();
       }
       else {}
    }

    Sieht so aus, als hättest Du ein Timingproblem.
    Die Javascript-Funktion arbeitet eine Anweisung nach der anderen ab,
    kümmert sich allerdings nicht darum, was diese Anweisung nach sich zieht.
    Will heißen:
    Nach dem Zuweisen von zielURL zu opener.location.href lädt der Browser die dadurch angegebene Seite.
    Lokal geht´s fix, via Netzwerk dauert´s halt ein paar Sekunden(-bruchteile) länger.
    In der Zeit ist die Funktion aber schon längst durch, hat zwar zwischendurch versucht,
    opener.Formular.Produkte etwas zuzuweisen (fehlt da nicht ein document zwischen?), was aber mangels
    passenden Objektes nicht erfolgreich war (weil noch kein Dokument geladen), deswegen hat sie an dieser Stelle nichts bewirkt.

    Wie umgeht man das?
    Vielleicht im opener-Dokument eine Variable setzen und im o.g. Script warten, bis diese gesetzt ist,
    bevor Du die Zuweisung machst.
    Vielleicht hilft´s...

    Schönen Gruß aus Bilk

    Rainer
    (... der u.a. wegen solcher Späße Javascript endgültig satt hat)

    1. Hallo Rainer,

      --
      function mutterlink(zielURL) {
         opener.location.href = zielURL;
         opener.Formular.Produkte.selectedIndex = 3;
         if(self.close()) {
            self.focus();
         }
         else {}
      }

      Sieht so aus, als hättest Du ein Timingproblem.
      Die Javascript-Funktion arbeitet eine Anweisung nach der anderen ab,
      kümmert sich allerdings nicht darum, was diese Anweisung nach sich zieht.

      Das hatte ich zuerst auch im Verdacht. Aber selbst auf einem lokalen Webserver (localhost) läuft es nicht. Und selbst wenn dem so wäre, sollte aber mindestens das self.close() noch ausgeführt werden. Wird es aber leider auch nicht.

      Habe auch schon versucht eine kleine Schleife zum Zeitgewinn einzubauen. Aber egal wie hoch ich die Zähle, tut es dem Problem keinen Abruch :-(

      Trotzdem vielen Dank für den Vorschlag. Weiter so... Vielleicht finden wir ja noch des Rätsels Lösung....

      schönen Gruß aus Trier und gute Nacht!

      Peter