Laden...

Javascript Problem mit C#

Erstellt von kInGpInGoLd vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.074 Views
K
kInGpInGoLd Themenstarter:in
95 Beiträge seit 2007
vor 16 Jahren
Javascript Problem mit C#

Hallo,

ich hab gerade ein Problem und weiß nicht weiter. Beim Klicken auf einen Button wird mit Javascript (window.open) eine Seite geöffnet, welche nur für eine kleine Eingabe dient. Ich wollte, dass wenn ich in der Seite den Speicherbutton gedrückt habe, die Seite noch ein paar Sekunden offen ist und sich dann selbstständig schließt.

Ich hab es bis jetzt so versucht:


btnSaveDayTimes.Attributes.Add("onclick", "window.setTimeout(\"window.close();\",3000);");

Doch leider passiert da nix, auch wenn ich anstatt window.close() ein alert eingeben passiert nichts. Kann das eventuell mit dem Postback zu tun haben, der ausgeführt wird?

Mir wäre es lieb, wenn es Clientseitig bleiben würde...

Gruß!

184 Beiträge seit 2005
vor 16 Jahren

Wenn du bei einem Button clientseitig Javascript ausführen willst, muss am Ende immer ein "return false;" stehen -- damit wird der eigentliche PostBack verhindert.

K
kInGpInGoLd Themenstarter:in
95 Beiträge seit 2007
vor 16 Jahren

Das ist mir ja bewusst, aber in dem Button-Click Event werden noch Daten in ne DB geschrieben, also kann ich auf den Postback nicht verzichten.

184 Beiträge seit 2005
vor 16 Jahren

Da liegt dann aber auch der Widerspruch: Ein Postback erfordert klassischerweise ein erneutes Laden der Seite (serverseitig wird ja die gesamte Seite einmal neu erstellt), dein Javascript soll aber im Kontext der "alten" Seite ausgeführt werden.

Du hast denk ich 2 Möglichkeiten:

  1. Du verwendet AJAX um einen asynchronen PostBack auszuführen (Daten in die DB schreiben, alles serverseitige eben) und führst danach dein JavaScript aus

  2. Du machst einen "richtigen" synchronen Postback und schreibst beim Laden der Seite beispielsweise im body onLoad ereignis dein script rein

Ich persönlich würde die erste Möglichkeit bevorzugen, dehnn im Prinzip ist es ja genau das was du machen willst -- asynchron serverseitig etwas ausführen, und danach das Fenster zeitversetzt schließen.

K
kInGpInGoLd Themenstarter:in
95 Beiträge seit 2007
vor 16 Jahren

Ajax scheidet aus.
Das 2. probiere ich gerade...

Danke!

K
kInGpInGoLd Themenstarter:in
95 Beiträge seit 2007
vor 16 Jahren

So habe es jetzt anders gelöst.
Nach dem erfolgreicht in die DB geschrieben wurde mache ich folgendes:


ClientScript.RegisterClientScriptBlock(ClientScript.GetType(), "hI", "<script>window.setTimeout(\"window.close();\",3000);</script>");

Danke und Gruß!