Hi Cheatah,
Asynchronität. Wer garantiert Dir, dass kein Fenstermanager dies erfordert?
Wieso Fenstermanager? Der Popup-Blocker soll doch das Öffnen eines Fensters verhindern; der Fenster-Manager bekommt also nie den Auftrag, ein Fenster zu öffnen. Wenn doch, ist der Blocker unbrauchbar.
Entweder er *hat* das Öffnen eines Popups verhindert oder nicht. Und wenn er es *nicht* verhindert hat, dann existiert das Popup. Punkt.
Falsch. Wer ist "er"?
Nicht falsch, aber vielleicht vergaß ich zu erwähnen, dass die Prüfung auf Existenz des Popups selbstverständlich erst nach einer angemessenen Wartezeit erfolgen darf, weil ein Popup, das *nicht* verhindert wird, eine gewisse Zeit braucht, sich zu entfalten. Das erschien mir selbstverständlich. Ach ja, und "er" ist selbstverständlich der Popup-Blocker. Siehe vorhergehender Satz in meinem Posting.
Wenn natürlich der Benutzer das Popup schneller schließt als die Abfrage stattfindet, führt das zum Urteil "Popup-Blocker".
Ich halte es für unwahrscheinlich, dass der Benutzer schneller das allmählich erscheinende Fenster schließen kann, als die nächste Code-Zeile die Referenz überprüft.
Ich auch, ich halte es sogar für nahezu unmöglich, hatte das nur der Vollständigkeit halber erwähnt, um Spitzfindigkeiten zu vermeiden. ,-)
Aber auch das sehe ich als realistisches Ergebnis: Der Anwender will *auf gar keinen Fall* ein Popup haben.
Viel wahrscheinlicher ist, dass der separat installierte Popup-Blocker _langsamer_ ist als die Code-Abarbeitung.
Was meinst du mit "langsamer"? Wenn er korrekt und den Anforderungen entsprechend implementiert ist, dann eliminiert er den Code, der das Popup erzeugen will, bevor oder während dieser ausgeführt wird, z.B. indem er die Methode window.open() mit einer "leeren" Methode überschreibt, die nichts weiter tut als null zurückzugeben.
So long,
Martin
Idealismus wächst mit der Entfernung zum Problem.