Priorität/Schweregrad:
Niedrig Plattform:
Chrome 124, Ubuntu 22 Version:
Discourse v3.3.0.beta2-dev Beschreibung:
Discourse führt eine automatische Codehervorhebung mit hljs durch, auch wenn keine Sprache angegeben wurde. Diese Funktion funktioniert in der normalen Themenansicht, aber nicht, wenn der Code im Vollbildmodus angezeigt wird. Reproduzierbare Schritte:
Erstellen Sie ein Thema mit einem Codeblock, ohne die Sprache anzugeben
System.out.println("hello world");
Zeigen Sie das Thema an und sehen Sie, dass hljs eine Sprache erkannt und eine Hervorhebung angewendet hat.
Klicken Sie auf die Schaltfläche Vollbild oben rechts im Codeblock.
Sehen Sie, dass die hljs-Spracherkennung fehlgeschlagen ist und keine Hervorhebung angewendet wird
Hier sind einige Screenshots in einem großen Bild, wegen Einschränkungen für neue Benutzer .
Danke für den Bericht, @oskar1, ich kann diesen Fehler lokal bestätigen. (Es ist schwieriger, dies auf Meta zu reproduzieren, da wir text und nicht auto als default code lang auf Meta verwenden.)
Wir werden uns bald darum kümmern, dies zu beheben.
Sie haben den Klassennamen lang-auto auf Markdown-Code angewendet, der hier automatisch entfernt wird, damit die Bibliothek die Sprache erraten kann.
Wenn Sie jedoch in den Vollbildmodus wechseln, ist lang-auto nicht mehr im Element vorhanden, und Sie haben nur den Klassennamen language-<detected-language-here>. Daher ist lang undefiniert.
Eine mögliche Lösung könnte hier sein – wenn lang-auto nicht gefunden wird, suchen Sie nach language-<..>
const m = className.match(/^lang-(.+)$/);
→ const m = className.match(/^`(?:lang|language)-(.+)$/);