expertenaustausch > comp.lang.* > comp.lang.javascript

Heiko Wetteborn (12.01.2019, 09:04)
Hallo,
Also Folgendes.
In einem HTML-Document steht u. A. folgende Zeile

<input type="text" onfocus="alert('Du hast das Feld aktiviert');"
name="test" title="test">

Diese Zeile funktioniert in allen Browsern, außer dem Safari unter IOS,
macOS und Windows.
Klickt man mit dem Chrome oder Firefox in das Feld, poppt ein Fenster
auf, welches mit OK zu bestätigen ist. Der Curser befindet sich dann im
Eingabefeld, und man kann Text eingeben.

Klicke ich jedoch im Safari-Browser in das Textfeld, erscheint ebenfalls
das Popup-Fenster und es muss ebenfalls mit OK bestätigt werden, aber
danach erhält das Eingabefeld erneut den Focus und das Popup-Fenster
taucht erneut auf. Aus dieser Schleife kommt man im Safari nur raus,
wenn der Safari beendet wird.

Wie bekomme ich es hin, dass auch der Safari-Browser damit klar kommt,
wie Firefox, Chrome, Edge, Internet Explorer, usw.?
Arno Welzel (12.01.2019, 13:52)
Heiko Wetteborn:

> Hallo,
> Also Folgendes.
> In einem HTML-Document steht u. A. folgende Zeile
> <input type="text" onfocus="alert('Du hast das Feld aktiviert');"
> name="test" title="test">


Ein vollständiges Beispiel mit URL wäre sinnvoll:

<https://arnowelzel.de/samples/focus-alert.html>

> Diese Zeile funktioniert in allen Browsern, außer dem Safari unter IOS,
> macOS und Windows.
> Klickt man mit dem Chrome oder Firefox in das Feld, poppt ein Fenster
> auf, welches mit OK zu bestätigen ist. Der Curser befindet sich dann im
> Eingabefeld, und man kann Text eingeben.
> Klicke ich jedoch im Safari-Browser in das Textfeld, erscheint ebenfalls
> das Popup-Fenster und es muss ebenfalls mit OK bestätigt werden, aber
> danach erhält das Eingabefeld erneut den Focus und das Popup-Fenster
> taucht erneut auf. Aus dieser Schleife kommt man im Safari nur raus,
> wenn der Safari beendet wird.


Nun - im Prinzip korrekt: denn durch die Alert-Box verliert das Feld den
Focus und wenn sie geschlossen wird, bekommt sie ihn wieder. Andere
Browser tun das halt nicht - aber auf das Anklicken eines bearbeitbaren
input-Elements damit zu reagieren, dass man einen Alert anzeigt, ist
wohl generell nicht sehr sinnvoll.

> Wie bekomme ich es hin, dass auch der Safari-Browser damit klar kommt,
> wie Firefox, Chrome, Edge, Internet Explorer, usw.?


Ein zweites Element einbauen, dem man den Focus gibt, bevor man die
Alert-Box öffnet. Anders wird es wohl nicht gehen.
Robin Koch (12.01.2019, 14:20)
Am 12.01.2019 um 12:52 schrieb Arno Welzel:

>> Wie bekomme ich es hin, dass auch der Safari-Browser damit klar kommt,
>> wie Firefox, Chrome, Edge, Internet Explorer, usw.?

> Ein zweites Element einbauen, dem man den Focus gibt, bevor man die
> Alert-Box öffnet. Anders wird es wohl nicht gehen.


Das unterbricht die Schleife.

Aber lässt sich nach bestätigen die Alerts auch etwas in das Feld
eintragen, wenn es den Fokus nicht mehr hat?

Meine Idee wäre ein Flag zu setzen, dass im Listener mit ausgewertet wird.
Thomas 'PointedEars' Lahn (12.01.2019, 16:59)
Heiko Wetteborn wrote:
> In einem HTML-Document steht u. A. folgende Zeile
> <input type="text" onfocus="alert('Du hast das Feld aktiviert');"
> name="test" title="test">
> Diese Zeile funktioniert in allen Browsern, außer dem Safari unter IOS,
> macOS und Windows.


Vermutlich, weil Du den Benutzer mit dem alert() in eine Art Endlosschleife
zwingen würdest: Zuerst wird das Steuerelement fokussiert, dann wird das
alert() ausgeführt und der Fokus wechselt zum Meldungsfenster. Schliesst
der Benutzer das modale Meldungsfenster, würde wieder das Steuerelement
fokussiert usw.

window.alert() soll auch deshalb heutzutage nur noch in Ausnahmefällen
benutzt werden. (Und wenn, dann *so* geschrieben werden.)

> Wie bekomme ich es hin, dass auch der Safari-Browser damit klar kommt,
> wie Firefox, Chrome, Edge, Internet Explorer, usw.?


Ohne alert().

Das ist wohl auch der Grund, weshalb Jakob Nielsens Web-Usability-Kolumne
“Alertbox” hiess/heisst:

<http://www.useit.com/alertbox/> (wird jetzt umgeleitet)

<https://www.nngroup.com/search/?q=Alertbox>
Thomas 'PointedEars' Lahn (12.01.2019, 17:03)
Robin Koch wrote:
> Am 12.01.2019 um 12:52 schrieb Arno Welzel:
> Das unterbricht die Schleife.
> Aber lässt sich nach bestätigen die Alerts auch etwas in das Feld
> eintragen, wenn es den Fokus nicht mehr hat?
> Meine Idee wäre ein Flag zu setzen, dass im Listener mit ausgewertet wird.


Wegen Scriptkiddies wie euch müssen Browserhersteller (z. B. Mozilla) immer
wieder unnötig Ressourcen investieren, um eigentlich offensichtlichen
Schwachsinn zu unterbinden (und schiessen dabei oft übers Ziel hinaus, was
ordentlichen Entwicklern wie mir dann das Leben schwermacht).

*Da* *gehört* *kein* *alert()* *hin!*

Ende Gelände. [psf 4.7]
Maik Koenig (12.01.2019, 19:51)
Am 12.01.2019 um 08:04 schrieb Heiko Wetteborn:
> Hallo,
> Also Folgendes.
> In einem HTML-Document steht u. A. folgende Zeile
> <input type="text" onfocus="alert('Du hast das Feld aktiviert');"
> name="test" title="test">


Ich hoffe mal, das mit dem alert() ist nur zum Testen weil es so
natürlich schwachsinnig wäre und für mich ein Grund, die Seite schon
pauschal nie zu besuchen. Was genau soll denn eigentlich passieren?

Greetz,
MK
Ähnliche Themen