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