grieseju: Verhalten von Safari bei window.close()

Hallo zusammen,

ich habe noch wenig Erfahrung in Javascript und folgendes Problem:
Abhängig von einer Benutzereingabe (Variable) möchte ich ein php-Script ausführen. Zur Realisierung nutze ich Javascript, mit dem ich ein weiteres Browserfenster mit dem Link incl. dem Wert der Variablen zu dem php-Script aufrufe und dieses Fenster anschließend wieder schließe. Das funktioniert auch soweit mit Firefox (18.0.2), Opera (12.12), SeaMonkey (2.15.2), IE (9.0.8112.16421) und Chrome (?). Nur Safari (5.1.7) macht mir Probleme, sobald der Code windows.close() enthält. Enthält der Code kein windows.close(), dann funktioniert er auch bei Safari.

Hier der relavante Javascript-Code (ohne die Variable der Benutzereingabe):
function Test() {
  var MF = window.open("http://www.google.de/", "_blank"); //www.google.de hier nur zum Testen
  // mache irgend etwas, nutzt aber nichts
  // MF.Focus(); nutzt auch nichts
  // alert('Test'); nutzt auch nichts
  // Pause(10000); nutzt auch nichts
  MF.close();
}

Wie gesagt, es handelt sich hierbei nur um den relevanten Codeteil und sobald MF.close() enthalten ist, streikt Safari, bzw. das neue Fenster wird noch aufgerufen, es macht aber nicht, was es soll (führt das php-Script nicht aus). Im obigen Beispiel wird nur versucht, www.google.de zu laden. Der Versuch scheitert aber; Google wird bei mir nicht geladen.

Um das php-Script auszuführen, habe ich es auch schon erfolglos mit window.location.href und anschließendem history.back(), statt window.open() versucht.

Nun meine Fragen:
Wie bekomme ich es hin, dass die Funktion auch mit Safari funktioniert? Alternativ: wie kann ich mein php-Script, dem ja erst clientseitig der Wert einer Variablen übergeben wird, ausführen lassen?

Als "Betriebssystem" verwende ich Windows 7 (32 Bit, bzw. 64 Bit).
Die erwähnte Pausefunktion habe ich dem Nezt entnommen (ich weiß aber nicht mehr wo). Sie lautet:
function Pause(Zeit){
  var Dauer = new Date();
  Dauer = Dauer.getTime() + Zeit;
  do {
    var Dauer2 = new Date();
    Dauer2 = Dauer2.getTime()
  } while(Dauer2 <= Dauer);
}

Vorab vielen Dank für Eure Antworten
Jürgen

  1. Hallo!

    Alternativ: wie kann ich mein php-Script, dem ja erst clientseitig der Wert einer Variablen übergeben wird, ausführen lassen?

    Du kennst POST und GET? Oder habe ich dich jetzt völlig falsch verstanden?
    Brauchst du denn unbedingt ein neues Fenster? Geschieht dort irgend etwas relevantes ausser, dass der PHP-Code ausgeführt wird?

    Vielleicht hilft dir ja auch das Stichwort AJAX?

    Matze

    1. Hallo Matze,

      manchmal hat man ja ein Brett vor dem Kopf: es war mein erstes PHP-/Javascript und GET und POST mittels AJAX verwende ich bereits im Script. Zur Lösung dieses einen Problems bin ich aber auch nach mehreren Tagen nicht darauf gekommen, ebenfalls AJAX/GET zu verwenden. Dank Deines Hinweises ist mir nun das Brett vom Kopf gefallen und ich habe mein Problem gelöst bekommen. Vielen Dank.

      Allerdings ist das Verhalten von Safari schon merkwürdig.

      Jürgen

      Hallo!

      Alternativ: wie kann ich mein php-Script, dem ja erst clientseitig der Wert einer Variablen übergeben wird, ausführen lassen?

      Du kennst POST und GET? Oder habe ich dich jetzt völlig falsch verstanden?
      Brauchst du denn unbedingt ein neues Fenster? Geschieht dort irgend etwas relevantes ausser, dass der PHP-Code ausgeführt wird?

      Vielleicht hilft dir ja auch das Stichwort AJAX?

      Matze