5 Stimmen

Welche Gründe sprechen dagegen, HTML-Tabellen bei der Validierung von Benutzereingabefeldern zuzulassen?

Ich schreibe gerade an einem kleinen Wiki und gehe alle Optionen für die Syntaxhervorhebung durch. Debattieren zwischen Wiki-Syntax (mediawiki) und Markdown + whitelisted Tags. Ich denke, ich würde letzteres bevorzugen, aber ich denke, meine Benutzer werden Tabellen brauchen. Warum sind Tabellen hier auf Stackoverflow nicht erlaubt?

<table> <tr> <td> </td> </tr> </table>

4voto

geowa4 Punkte 38662

In einem Q&A-Format haben sie keinen Zweck. Zumindest kann ich mir keinen Grund vorstellen, warum ich eine Tabelle verwenden sollte, um die Frage eines anderen zu beantworten oder selbst eine zu stellen.

Außerdem können Sie das sowieso tun:

cell 1-1      cell 1-2
cell 2-1      cell 2-2

EDIT: Nachdem ich die Kommentare zu meiner Antwort gelesen habe, sehe ich, dass es ein paar Fälle gibt, in denen eine Tabelle eine bessere visuelle Hilfe sein könnte. Daher werde ich ein Markdown ähnlich wie CSV empfehlen; ich denke, das ist einfach genug zu schreiben und zu implementieren.

2voto

cjk Punkte 44394

Das Verbot von Tabellen wäre eine gute Idee, wenn Ihre Website auf Tabellen aufbaut und Sie keine Regex schreiben können, die gut genug ist, um zu überprüfen, ob die Html des Benutzers syntaktisch korrekt ist, da sonst Ihr Layout beeinträchtigt werden könnte.

Selbst wenn Ihre Website kein Tabellenlayout hat, kann es dazu führen, dass Ihre Website verunstaltet wird, wenn Sie zwei Sätze von fehlerhaftem Tabellen-HTML in Kommentaren usw. haben.

2voto

sastanin Punkte 38556

Drei Gründe:

  • Kompatibilität mit beliebigen Markdown-Implementierungen,
  • sichere Benutzereingabe,
  • Layout-unabhängiger Inhalt

Standard-Abschrift no Tabellen unterstützen. Es soll genau wie E-Mail funktionieren. SO verwendet Standard-Markdown, also keine Tabellen.

Einige Markdown-Erweiterungen unterstützen zwar Tabellen, sind aber untereinander nicht kompatibel, was die Idee von Markdown zunichte macht, da der Inhalt von einer bestimmten Markdown-Implementierung abhängig wird.

Die Tabellen können also nur mit HTML-inside-Markdown erstellt werden. Was auch nicht gut ist. Ich bin sicher, dass Markdown2PDF, Markdown2TeX und Markdown2TheNextBigML Konverter einfach zu schreiben sind. Die Umwandlung von Markdown mit eingebettetem HTML in etwas anderes als HTML ist nicht trivial. Es macht also keinen Sinn, alles in Markdown (reiner Text) zu speichern, wenn (etwas) eingebettetes HTML erlaubt ist.

Ein weiterer Grund, alle von Nutzern übermittelten HTML-Dateien zu bereinigen, liegt auf der Hand: Es ist zu schwierig und teuer, sie richtig zu analysieren, und es kann das Layout unterbrechen (z. B. <table width="10000" height="10000"> ).

Und schließlich bietet ein leichtgewichtiges (reines Markdown) Markup einen großen Vorteil: Es hängt nicht von einem bestimmten Website-Layout ab (Bildschirmbreite, Abstände, Ränder, Blocksatz, Spaltenbreite usw.). Wenn also in einem Jahr eine SO-Neugestaltung stattfindet, muss der Inhalt nicht bearbeitet werden (HTML-Schnipsel hängen implizit von einem bestimmten CSS ab). Zusätzlicher Bonus: einfachere Verwendung in Anwendungen von Drittanbietern (z. B. Mobiltelefon-Clients).

1voto

Svante Punkte 49287

Ich denke, das ist willkürlich. Es könnte viele Verwendungszwecke für sie geben, aber es scheint, dass die manuelle Ausrichtung von Text mit fester Breite hier bevorzugt wird (was ich für einen Hack halte).

Ich persönlich bevorzuge die BBCode-Syntax.

  • es ist eindeutig
  • es ist fast wie HTML
  • es ist nicht mit HTML zu verwechseln, da Klammern anstelle von Winkeln verwendet werden

"explizit" bedeutet, dass jeder beabsichtigte Effekt in fast jeder Kombination ausgedrückt werden kann und es keine unbeabsichtigten Effekte gibt (wie in Markdown, wenn eines der vielen Sonderzeichen verwendet wird). Ich habe zum Beispiel keine Ahnung, wie ich diese Website dazu bringen kann, ein Wort in Sternchen in einer nicht fixierten Schriftart anzuzeigen (*Wort*). Der Morsecode kann den Unterstrich nicht verwenden, da er ebenfalls ein Sonderzeichen ist. In BBCode gibt es nur ein Sonderzeichen: [

Außerdem wird die Bereinigung von Eingaben viel einfacher.

1voto

VonC Punkte 1117238

Bedenken Sie, dass der Wisiwyg-Javascript-Editor (WMD) das, was Sie eingeben, in Echtzeit darstellen muss
(eine wichtige Funktion, die Jeff von Anfang an in SO gewünscht hat)

Daher denke ich die dynamische Aktualisierung der Tabelle wäre viel zu komplex, um sie zu analysieren/anzuzeigen da der HTML-Übersetzer unvollständige Tabellenstrukturen während der Eingabe interpretieren müsste.
Das bedeutet, dass man mit Merkmalen wie colspan, rowspan, falschen Kopfstrukturen usw. zurechtkommen muss.

Um also eine bessere dynamische Vorschau zu ermöglichen, wurden die Tabellen komplett gestrichen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X