Forum: PC-Programmierung Javascript-Dialog funktioniert plötzlich nicht mehr


von Rahul D. (rahul)


Lesenswert?

Moin,
ich habe einen Dialog in Javasript gebaut, der auf diesem Beispiel 
basiert:
https://wiki.selfhtml.org/wiki/JavaScript/Tutorials/zug%C3%A4ngliche_Dialog-Box

Die Seite läuft nur im Intranet auf einem http-Server (KEIN https!).

Bis heute Morgen funktionierte er auch einwandfrei.
Dann kam Firefox auf die Idee, ein Update von 97.0.2 auf 98 
durchzuführen, und schon funktionierte er nicht mehr.
Das konnte ich an einem anderen Windows-Rechner verifizieren (vor und 
nach dem Update...).
Die anderen JS-Scripte funktionieren - nur nicht der Dialog.

Jetzt würde ich das gerne wieder zum Laufen bringen.
Wie mache ich das?
Downgrade des Firefox ist keine Alternative; andere Browser (Opera, 
Edge) zicken gleichermaßen rum.

Vielen Dank für hilfreiche Hinweise!

von Chris L. (kingkernel)


Lesenswert?

Was spuckt die Konsole in Firefox (F12 drücken, dann auf den Reiter 
Konsole klicken) denn als Fehlermeldung aus?

Funktioniert das Beispiel auf der von dir verlinkten Seite denn noch? 
Ich kann es auf meinem Rechner hier leider nicht testen.

: Bearbeitet durch User
von Rahul D. (rahul)


Lesenswert?

Chris L. schrieb:
> Was spuckt die Konsole in Firefox (F12 drücken, dann auf den Reiter
> Konsole klicken) denn als Fehlermeldung aus?
Nichts. Zumindest keine Fehlermeldung seitens Firefox.


> Funktioniert das Beispiel auf der von dir verlinkten Seite denn noch?
Ja.

von DPA (Gast)


Lesenswert?


von Rahul D. (rahul)


Angehängte Dateien:

Lesenswert?

Der Fehler liegt wohl bei mir:
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dialog

Die angehängte Datei funktioniert nämlich.
Meine ist etwas umfangreicher... (deswegen fehlt mir etwas der Antrieb 
zur Fehlersuche. ;) )

von 🐧 DPA 🐧 (Gast)


Lesenswert?

Der <dialog> tag wird erst seit Firefox 98 unterstützt. Davor hatte 
das keine besonderen Styles & Funktionalitäten. Aber jetzt schon. Du 
wirst vermutlich nicht der erste sein, der das einfach nur für einen 
normalen Container wie z.B. <main> <header> <footer> etc. 
gehalten hat, der nur etwas informativer ist. Ist jetzt halt doch etwas 
komplexer geworden. Musst du nun halt überarbeiten. Also entweder wieder 
zu was normalem, wie ein <div> wechseln, oder das brav so machen, wie 
vorgesehen, .showModal() und eigene Logik wegnehmen. In letzterem fall 
eventuell noch ein Polyfill für ältere Browser reinwerfen.

von Rahul D. (rahul)


Lesenswert?

🐧 DPA 🐧 schrieb:
> Ist jetzt halt doch etwas
> komplexer geworden. Musst du nun halt überarbeiten. Also entweder wieder
> zu was normalem, wie ein <div> wechseln, oder das brav so machen, wie
> vorgesehen, .showModal() und eigene Logik wegnehmen. In letzterem fall
> eventuell noch ein Polyfill für ältere Browser reinwerfen.

Es hat ja mit der alten Version funktioniert inkl. Polyfill etc.
Es sollte mMn nicht komplexer, sondern einfacher werden.

von Chris L. (kingkernel)


Lesenswert?

Dein Problem ist aber, dass der alte Firefox, den dialog-tag ignoriert 
hat, weil er ihn nicht kannte. Der neue Firefox kennt ihn aber und 
interpretiert ihn entsprechend und da grätschst du jetzt mit deinem 
eigenen code rein.
Du kannst statt dialog also einen div-container verwenden oder den 
dialog-tag von nun an wie vorgesehen verwenden. ich denke mal, dass war 
auch was DPA meinte.

von Rahul D. (rahul)


Lesenswert?

Chris L. schrieb:
> Dein Problem ist aber, dass der alte Firefox, den dialog-tag
> ignoriert
> hat, weil er ihn nicht kannte. Der neue Firefox kennt ihn aber und
> interpretiert ihn entsprechend und da grätschst du jetzt mit deinem
> eigenen code rein.
jupps.

> Du kannst statt dialog also einen div-container verwenden oder den
> dialog-tag von nun an wie vorgesehen verwenden. ich denke mal, dass war
> auch was DPA meinte.
Der "alte" Code ist in der vergangenen Woche entstanden ;)
Ich würde den Code jetzt gerne modernisieren, aber wenn ich mit PHP das 
<dialog>-Beispiel von Mozilla erstelle, passiert auch nichts.

von Rahul D. (rahul)


Lesenswert?

Rahul D. schrieb:
> aber wenn ich mit PHP das
> <dialog>-Beispiel von Mozilla erstelle, passiert auch nichts.

Das war jetzt missverständlich ausgedrückt:
Wenn ich den Beispielcode einfach nur von PHP erzeugen lasse, indem ich 
ein 'echo "' davorsetze und die Zeile mit '\n";' beende, funktioniert es 
(natürlich) - es wird ja immer noch der gleiche HTML-Code erzeugt.

Ich teste mal weiter.

von Εrnst B. (ernst)


Lesenswert?

Fehlt deinem HTML evtl eine "<!doctype html>" - Angabe?

deine jsDialog.html ist auch nicht ganz vollständig, da hast du nur zwei 
Codeschnippsel von der Mozillaseite aneinandergehängt, ohne das 
doctype-html-head-body boilerplate aussenherum.

Das vollständige Mozilla-Beispiel kriegst du z.B. per "view source" auf 
dem Beispiel-Iframe.

https://yari-demos.prod.mdn.mozit.cloud/en-US/docs/Web/HTML/Element/dialog/_sample_.advanced_example.html

von Rahul D. (rahul)


Lesenswert?

Εrnst B. schrieb:
> Fehlt deinem HTML evtl eine "<!doctype html>" - Angabe?
Das habe ich zwischenzeitlich selber ergänzt.
Firefox hatte den ersten Tag mit einer Meldung markiert, dass der noch 
fehlen würde.

> deine jsDialog.html ist auch nicht ganz vollständig, da hast du nur zwei
> Codeschnippsel von der Mozillaseite aneinandergehängt, ohne das
> doctype-html-head-body boilerplate aussenherum.
Funktioniert trotzdem. Der Tag ist ist jetzt auch drin.

> Das vollständige Mozilla-Beispiel kriegst du z.B. per "view source" auf
> dem Beispiel-Iframe.
> 
https://yari-demos.prod.mdn.mozit.cloud/en-US/docs/Web/HTML/Element/dialog/_sample_.advanced_example.html

Danke für den Link.
Ich bastel halt mehr, als dass ich Ahnung von der Web-Entwicklung Ahnung 
habe ("learning by try-and-error").
Das ganze Projekt ist auch schon etwas älter (ca. 5 Jahre) und 
historisch gewachsen.
Die Arbeitskollegen, die damit arbeiten, sind zufrieden.

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.