• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[FRAGE] Problem mit IE11 und clientX

Hammi71

New member
Hallo ich habe ein Problem mit dem IE11.

Bisher haben wir beim Schliessen des Browsers (bis IE10) die Mausposition über dem X Symbol abgefragt, um
danach noch einen Request an den Server zu schicken.
Mit dem IE (11.0.13) funktioniert die Abfrage nicht mehr, da window.Event.clientX nur noch undefined zurück liefert.
Hat jemand von euch eine Idee, ob es ein Bug ist oder wie man das Problem mit dem IE11 lösen kann.

Anbei noch eine kleine HTML Seite zum Testen (die Abfrage nach dem Browser könnt ihr ignorieren)...

HTML:
<html>

<head>

<meta http-equiv="X-UA-Compatible" content="IE=11"/> // Hier kann man den Browser umstellen

<title>screenX\screenY example</title>

 

<script type="text/javascript">

 

function onAbmelden() {

                        if (navigator.appName == 'Netscape') { // IE 11 Zweig

                                   var windowLaenge = (document.documentElement.clientWidth ? document.documentElement.clientWidth

                                                                                              : document.body.clientWidth);

                                               if (window.event.clientY <= "0"

                                                                       && (window.event.clientX > (windowLaenge - 16) || window.event.clientX < 16)) {

                                                           

                                   }

                                   alert("Netscape: X: " + window.event.clientX + "  Y:" + window.event.clientY);

                        }

                        if (navigator.appName == "Microsoft Internet Explorer") { // IE 10 Zweig

                                   var windowLaenge = (document.documentElement.clientWidth ? document.documentElement.clientWidth

                                                           : document.body.clientWidth);

                                   if (window.event.clientY <= "0"

                                                           && (window.event.clientX > (windowLaenge - 16) || window.event.clientX < 16)) {

 

                                    }

                                   alert("Microsoft Internet Explorer: X: " + window.event.clientX + "  Y:" + window.event.clientY);

                        }

}

 

</script>

</head>

 

<body onbeforeunload="onAbmelden()">

<p>Fenster schliessen löst ein Popoup mit den Koordinaten der Maus aus, in diesem Fall ist die Maus über dem X Symbol des Fensters</p>

</body>

</html>
 
Der Code sieht ja grausig aus :)
Feuert beim Schließen nicht auch .addEventListener('close',listener,false) ? Oder geht der nur, wenn die Seite geschlossen wird und der Browser auf beibt?
 
Das onbeforeunload mache ich doch:
siehe

<body onbeforeunload="onAbmelden()">

Und nein, leider funktioniert es bei mir im IE11 nicht.. in der Version 11.0.13 genau gesagt.
Wenn man das META TAG auf IE10 umstellt oder die Kompatibi.Modus einstellt geht es.
 
Siehe mein erstes Posting.
Wir fragen die Mausposition beim Event (Mausklick) ab, damit wir mitbekommen wann das X Symbol geklickt wurde.
Danach schicken wir noch im onbeforeunload einen Request an den Server, der dort einen "Schlüssel" entsperrt.
Also den Schlüssel der Daten, die bearbeitet wurden. Dieser wurde beim Aufruf der ersten Seite gesperrt und muss beim Schliessen des Browser wieder entsperrt werden.

- - - Aktualisiert - - -

Wurde mein Vorschlag denn mal probiert?

Ja, leider ohne Erfolg..
 
Ja, das ist klar. Aber auf die Weise wie du das jetzt machst, mag es der 11 er ja anscheinend nicht. Deshalb hab ich einen anderen Vorschlag gemacht. Wurde der ausprobiert oder funktioniert er nicht?
 
Aber onbeforeunload feuert doch ohnehin nur dann, wenn man von einer Webseite wegnavigiert/schließt...
 
Aber onbeforeunload feuert doch ohnehin nur dann, wenn man von einer Webseite wegnavigiert/schließt...

Und was passiert wenn man das X Symbol des Fenster vom Browser anklickt :p... der Browser schliesst sich und onbeforeunload wird abgefeuert..
verstehe daher Deine Frage nicht.

- - - Aktualisiert - - -

Was heißt "ohne Erfolg"? Was steht in der Konsole?

Wenn ich anstatt dem onbeforeunload den Listener in das Script einfüge passiert nicht.
window.addEventListener('close',listener,false);

Also auch kein Alert mit den Undefined Werten, da keine Positionen ermittelt werden können.

Bei meiner Version scheint es so zu sein, dass aus dem window.Event ([object MSEventObj]) im IE10, im IE11 ein window.event [object BeforeUnloadEvent] Event geworden ist und
dieses hat keine clientX oder ClientY Attribute, somit liefert der IE11 nur undefined.

- - - Aktualisiert - - -

Wenn ich folgenden Event Listener einfüge.

window.addEventListener('unload',onAbmelden,false);

Passiert das Gleiche... es kommt nur undefined bei der Position.

Bei close als eventType kommt nicht einmal das Alert Fenster, mir ist auch kein close eventType bekannt.
 
Zuletzt bearbeitet:
Ja, ich weiß. Aber meine Frage ist: wieso machst du das nicht einfach folgendermaßen:
Code:
window.onbeforeunload = function(){
  //entsperre Schlüssel wieder
}
?
 
Genauer gesagt.
Das onbeforeunload Event wird bei jedem Seitenwechsel des Browser abgefeuert... Wenn die Bearbeitung der Daten z.B. 10 Seitenwechsel beinhaltet also 10 unbeforeunloads, dann wollen wir natürlich nicht,
dass der Schlüssel mitten in der Bearbeitung entsperrt wird. Sondern nur wenn der "Seitenwechsel" durch das Klicken des X ausgelöst wurde, also müssen wir darauf reagieren.
Heißt wir fragen bei jedem onbeforeunload die Mausposition ab und wenn sie über dem X ist wird der Schlüssel entsperrt. Weil ja der Benutzer den Browser schließt.
 
Kann man die ganzen Seitenwechsel nicht ganz abschaffen indem man das Dingens komplett mit Ajax aufbaut?
 
Das onbeforeunload ist nicht das Problem, die Javascript Methode wird ja ausgeführt.
Der Rückgabewert des Event ist das Problem, da es im IE11 ein anderes Event ist.

- - - Aktualisiert - - -

Kann man die ganzen Seitenwechsel nicht ganz abschaffen indem man das Dingens komplett mit Ajax aufbaut?

Nein... wir benutzen ja schon teilweise Ajax, aber die Bearbeitung der Daten ist zu komplex und es sind teilweise mehr als nur 10 Seitenwechsel (abhängig vom Prozess=
 
Hmm, zu komplex für Ajax? Na ja. Alles eine Sache des Konzepts würde ich sagen. Aber müsst ihr wissen.
 
Zurück
Oben