Der Commit 08883cbdd1c39a0c15b97af44ddaefe14acdc21a hat die Discourse-Darstellung bei älteren Gecko-Versionen beschädigt. Gecko unterstützt den Optional-Chaining-Operator erst ab Version 74.
Ich könnte mich irren, aber meine erste Vermutung ist, dass wir keine Browserliste definieren und stattdessen eine Standardliste verwendet wird (wahrscheinlich @babel/preset-env · Babel). Diese berücksichtigt diese Version nicht als unterstützte Version, wodurch sie nicht transpiliert wird.
Es ist jedoch seltsam, dass Firefox 74 erst ein Jahr alt ist. Wenn man sich die aktuelle Browserliste ansieht:
Die Frage ist nun: @sam, möchten wir diese Version unterstützen? Obwohl sie erst ein Jahr alt ist, ist die aktuelle Firefox-Version 89, also 15 Versionen neuer. Ich bin mir nicht sicher, das ist deine Entscheidung. Wichtig ist zu bedenken, dass die Unterstützung dieser Version das Gewicht der Payload für alle erhöht, da Transpilierung im Wesentlichen wie ein Polyfill funktioniert (es werden einige Funktionen hinzugefügt, um diese Version zu unterstützen, und die Syntax wird durch Funktionsaufrufe ersetzt).
Es gibt viele Gründe, aber hauptsächlich erleichtert es die Arbeit für Entwickler. Wir müssen uns nicht allzu viele Gedanken darüber machen, was wir nutzen dürfen oder nicht, und haben eine eher moderne Basis.
Ich bin offen dafür, die Unterstützung fallen zu lassen, sofern unsere HTML-Fallback-Lösung vorhanden ist.
Was wir auf keinen Fall tun können, ist, IE9 eine funktionierende statische Seite und einem ein Jahr alten Firefox eine kaputte Seite anzuzeigen.
Ich bevorzuge es, nur bis auf einen Firefox/Chrome von vor 2–3 Jahren zu transpilieren, bin aber gerne bereit, diese Entscheidung @eviltrout und dir zu überlassen. Wir könnten es etwas aggressiver angehen, aber wir können keine kaputten Seiten anzeigen.
Edit: Siehe Rückverweis. Dies kann auf Android ein ziemlich ernstes Problem sein, da Browser-Updates dort oft nur sehr schleppend erfolgen.
Ja, einverstanden. Mindestens sollten wir die Unterstützung für Browserslisten implementieren, damit unerwartete Probleme mit nicht unterstützten Funktionen uns nicht überraschen.
Ich kann das OP auf Meta nicht reproduzieren. Ich habe es über Browserstack mit Firefox 73 auf macOS und Firefox 68 auf Windows versucht. @vige, kannst du das Problem auf Meta reproduzieren?
Ich denke, du hast recht, es sollte eigentlich funktionieren. Ich habe gerade den Code im Browser angesehen:
toggleHamburger: function toggleHamburger() {
this.state.hamburgerVisible = !this.state.hamburgerVisible;
this.toggleBodyScrolling(this.state.hamburgerVisible); // Fokus automatisch auf den ersten Link im Dropdown setzen
(0, _runloop.schedule)("afterRender", function () {
var _document$querySelect2;
(_document$querySelect2 = document.querySelector(".hamburger-panel .menu-links a")) === null || _document$querySelect2 === void 0 ? void 0 : _document$querySelect2.focus();
});
},
Beachte, dass wir trotzdem versuchen sollten, genau herauszufinden, was transpiliert wird und was nicht, auch wenn dies hier möglicherweise nicht das Problem ist.
Korrektur, falls ich falsch liege, @pmusaraj, aber ich denke, da wir preset-env nicht festlegen und somit keine Ziele definieren, werden alle Plugins, die wir einbinden, verwendet. Folglich wird proposal-optional-chaining definitiv angewendet.
Ich bin damit einverstanden, wir müssen vielleicht jedes Jahr jedes Plugin überprüfen und überlegen, ob es noch benötigt wird?
Vielen Dank an alle beteiligten Entwickler, dass ihr das so schnell behoben habt!
Zur Information: Nach meinen Tests betraf dieser Fehler in einigen Fällen auch die neueste Version von Microsoft Edge für Android (die, soweit ich weiß, nicht auf Gecko läuft).
Wärst du so nett, das tatsächliche v2.7.4-Tag zu diesem Release hinzuzufügen?
Ich habe gerade eine halbe Stunde damit verbracht, git checkout v2.7.4 auszuprobieren, was sich als nicht existent herausstellte