Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Window.onbeforeunload wie richtig eingesetzt?

Frage Entwicklung JavaScript

Mitglied: michi1983

michi1983 (Level 3) - Jetzt verbinden

29.11.2010, aktualisiert 16:01 Uhr, 9947 Aufrufe, 9 Kommentare

Hi Leute,

eine Freundin von mir hat mich um Hilfe gebeten.

Sie ist gerade bei ihrer Diplomarbeit dran und ein Bekannter von ihr (der jetzt nicht mehr auffindbar ist ) hat ihr dafür eine Website programmiert mit einem Online-Fragebogen.

Wenn ein User jetzt mitten im Fragebogen auf den "zurück" Button des Browsers klickt, wird mittels Java die Funktion

window.onbeforeunload = function(){ 
 return "Wenn Sie die Seite verlassen, werden die Daten gelöscht und Sie müssen von vorne beginnen!\n\nWollen Sie die Seite wirklich verlassen?"; 
}
aufgerufen und der User kann entscheiden ob er auf der Seite bleibt und weiter macht oder ob er die Seite verlassen möchte und die Daten gelöscht werden.

Wenn der User allderings auf den Button "weiter" klickt, der einfach zur nächsten Seite des Fragebogens führt, wird diese Funktion ebenso aufgerufen.
Dies soll aber nicht der Fall sein!

Das ganze wurde mit WordPress gemacht und diese Java Funktion wurde meines Erachtens nach von Hand nachgetragen im Quelltext.

Könnt ihr mir helfen wie ich das Problem beseitige?

Lieben Dank und schöne Tag!

Michael
Mitglied: nxclass
29.11.2010 um 21:23 Uhr
siehe: http://msdn.microsoft.com/en-us/library/ms536907%28VS.85%29.aspx unter 'To invoke'

Eine Lösung wäre: die Event Funktion zu überschreiben - entweder im Button mit onclick oder im Form mit onsubmit.
01.
window.onbeforeunload = function(e) {}
Bitte warten ..
Mitglied: michi1983
30.11.2010 um 00:07 Uhr
Hi nxclass,

bin leider was Java angeht nicht wirklich 'fit'.

Ich verstehe das 'e' in der Klammer bei 'function' nicht?! Ist das zum überschreiben?

Ich habe die Microsoft Seite auch schon davor aufgerufen gehabt, aber ich fang damit nicht so viel an.

Könntest du mir vielleicht etwas detaillierter erklären was du damit meinst?

Schöne Grüße
Bitte warten ..
Mitglied: nxclass
30.11.2010 um 09:35 Uhr
die Microsoft Seite auch schon davor aufgerufen gehabt, aber ich fang damit nicht so viel an
unter dem Punkt: 'To invoke' findest Du alle Ereignisse, welche das onbeforeunload Event auslösen - also NICHT NUR wenn die Seite verlassen wird.

das 'e' in der Klammer bei 'function'
das e ist das Event, was immer mit übergeben wird. Dieses Event Objekt beinhaltet viele Informationen welche wichtig sein können zur Auswertung in der Funktion. Und Ja - in dem Fall kann man das e weglassen, da es nicht benötigt wird.

Die Einfachste Lösung wäre dem Button 'Weiter' ein 'onclick' Attribut hinzu zufügen und darin die onbeforeunload Event-Funktion zu überschreiben
01.
<input type="submit" name="" value="" onclick="window.onbeforeunload = function(e) {}" />
EDIT:
Bitte beachte, daß es sich um Javascript handelt - nicht um Java - das ist schon ein großer Unterschied.
Bitte warten ..
Mitglied: michi1983
30.11.2010 um 11:20 Uhr
Hi nochmal,

vielleicht versteh ich das ja jetzt komplett falsch oder hab es falsch erklärt.

Aber ich möchte ja, dass gerade der "weiter" Button KEINE 'onbeforeunload' Funktion besitzt. Da soll der User einfach auf die nächste Seite kommen.
Nur wenn er den Fragebogen wirklich verlassen würde, soll er die Aufforderung bekommen dies zu bestätigen.

Oder meinst du damit, dem 'weiter'-Button dadurch die Funktion zu "entreißen" mit dem Überschreiben der Funktion?

Schöne Grüße
Bitte warten ..
Mitglied: nxclass
30.11.2010 um 12:31 Uhr
Oder meinst du damit, dem 'weiter'-Button dadurch die Funktion zu "entreißen" mit dem Überschreiben der Funktion?
... genau. Da sich dieses Event auf das window Objekt bezieht - gilt es für die gesamte Seite und kann nicht für einzelne Elemente der Webseite definiert werden.

Man könnte auch ein
01.
window.onbeforeunload = null;
versuchen - aber das könnte ein Fehler verursachen - denke ich.
Bitte warten ..
Mitglied: michi1983
30.11.2010 um 12:44 Uhr
Okay, jetzt hab ich verstanden was du mir sagen wolltest.

Kannst du mir jetzt noch einen Tipp geben mit was ich die Funktion bei submit "überschreiben" soll?

Schöne Grüße
Bitte warten ..
Mitglied: michi1983
30.11.2010 um 13:15 Uhr
01.
> <input type="submit" name="" value="" onclick="window.onbeforeunload = function(e) {}" 
02.
> /> 
03.
> 

aja, noch eine Frage. Würde dieser Code nicht die Funktion ERNEUT aufrufen anstatt sie zu überschreiben?

Gruß
Bitte warten ..
Mitglied: nxclass
30.11.2010 um 19:09 Uhr
die Funktion ERNEUT aufrufen anstatt sie zu überschreiben
nein - die Funktion ist {} - also leer.

Was ausgeführt wird ist eine simple Zuweisung - wie "x = 1". Bei den Javascript Events wird eine Funktion erwartet - schließlich muss der Browser (zB. bei einem Klick) etwas ausführen können.

man könnte es auch etwas anders schreiben:
01.
function meineFunktion(e) 
02.
03.
04.
window.onbeforeunload = meineFunktion;
es ist eben etwas "gewöhnungsbedürftig", daß eine Funktion wie eine Variable verwendet wird. Evtl. ist es einfacher es als Zeiger (Pointer) zu sehen.
Bitte warten ..
Mitglied: michi1983
06.12.2010 um 21:15 Uhr
So hallo nochmal,

es hat jetzt funktioniert.

Ich hab einfach dem "weiter" - Button die quasi leere Funktion übergeben.

Danke für die Hilfe
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Powershell Hashtable - Relativ sinnvoll eingesetzt?
gelöst Frage von MarabuntaBatch & Shell3 Kommentare

Ich hab das mal geschrieben um für zukünftige Einsätze die Powershell Hastables einsetzen zu können. Habt ihr da evtl. ...

Batch & Shell
Was genau bewirken die at-Zeichen in Batches und wann werden sie eingesetzt?
gelöst Frage von maximal1981Batch & Shell4 Kommentare

Hallo! Habe mir schon einige Batch-Scripts durchgelesen, jedoch habe ich für mich persönlich noch nicht klären können, wann und ...

RedHat, CentOS, Fedora
Wir findet man im Linux Sachen raus, wie welche Datenbanken werden eingesetzt ? Welcher Webserver ?
Frage von 116480RedHat, CentOS, Fedora22 Kommentare

Hallo, wie findet man an einem Linux System so Sachen raus Welche Komponenten werden eingesetzt Datenbank Dateien Scriptsprache Webserver ...

Vmware
Richtig Templates erstellen, wie wäre es richtig?
Frage von DeathNoteVmware11 Kommentare

Hallo. Ich würde mir gerne für 2012R2 Win10 und Win7 Templates erstellen. Also Maschinen, die ich mal jederzeit mit ...

Neue Wissensbeiträge
Verschlüsselung & Zertifikate

Die Hölle friert ein weiteres Stück zu: Microsoft integriert OpenSSH in Windows

Information von ticuta1 vor 40 MinutenVerschlüsselung & Zertifikate

Interessant SSH-Kommando in CMD.exe und PowerShell

Apple

IOS 11.2.1 stopft HomeKit-Remote-Lücke

Tipp von BassFishFox vor 1 TagApple

Das Update für iPhone, iPad und Apple TV soll die Fernsteuerung von Smart-Home-Geräten wieder in vollem Umfang ermöglichen. Apple ...

Windows 10

Windows 10 v1709 EN murkst bei den Regionseinstellungen

Tipp von DerWoWusste vor 1 TagWindows 10

Dieser kurze Tipp richtet sich an den kleinen Personenkreis, der Win10 v1709 EN-US frisch installiert und dabei die englische ...

Webbrowser

Kein Ton bei Firefox Quantum über RDP

Tipp von Moddry vor 1 TagWebbrowser

Hallo Kollegen! Hatte das Problem, dass der neue Firefox bei mir auf der Kiste keinen Ton hat, wenn ich ...

Heiß diskutierte Inhalte
Windows Server
RODC kann nicht aus Domäne entfernt werden
Frage von NilsvLehnWindows Server18 Kommentare

HAllo, ich arbeite in einem Universitätsnetzwerk mit 3 Standorten. Die Standorte haben alle ein ESXi Cluster und auf diesen ...

Hardware
Kein Bild mit nur einer bestimmten Grafikkarten - Mainboard Konfiguration
gelöst Frage von bestelittHardware18 Kommentare

Hallo zusammen, ich hatte schon einmal eine ähnliche Frage gestellt. Damals hatte ich genau das gleiche Problem. Allerdings lies ...

Netzwerkmanagement
Mehrere Netzwerkadapter in einem PC zu einem Switch zusammenfügen
Frage von prodriveNetzwerkmanagement17 Kommentare

Hallo zusammen Vorweg, ich konnte schon einige IT-Probleme mit Hilfe dieses Forums lösen. Wirklich klasse hier! Doch für das ...

Hardware
Links klick bei Maus funktioniert nicht
gelöst Frage von Pablu23Hardware16 Kommentare

Hallo erstmal. Ich habe ein Problem mit meiner relativ alten maus jedoch denke ich nicht das es an der ...