Überprüfen Sie, ob der HTML-Code ist gültig mit Javascript
Ich brauche eine zuverlässige Javascript-Bibliothek /Funktion prüfen Sie, ob eine HTML-snippet gilt, dass ich anrufen kann von meinem code. Zum Beispiel sollte geprüft werden, ob öffnenden tags und Anführungszeichen geschlossen sind, ist die Verschachtelung korrekt ist, etc.
Ich nicht wollen, dass die Validierung fehl, weil etwas nicht 100% - standard (würde aber auch gehen).
InformationsquelleAutor der Frage Ixx | 2012-04-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Update: diese Antwort ist beschränkt - siehe edit unten.
Weiter geht ' s mit @kolink die Antwort, die ich benutze:
I. e., wir erstellen eine temporäre div mit HTML. Um dies zu tun, wird der browser ein DOM-Baum auf Basis des HTML-Strings, die kann bedeuten, schließende tags etc.
Vergleich der div-HTML-Inhalt mit dem original HTML wird uns sagen, ob der browser benötigt, um irgendetwas zu ändern.
Gibt false zurück.
True zurück.
Edit: Wie @Quentin Hinweise unten, das ist allzu strengen für eine Vielzahl von Gründen: Browser wird oft fix weggelassen schließenden tags, auch wenn schließende tags optional sind für diesen tag. Eg:
...als gültig betrachtet wird (seit Ps dürfen das weglassen schließender tags), aber
checkHTML
false zurück. Browser wird auch die Normalisierung der tag-Fällen, und die alter-weißen Raum. Sie sollten sich bewusst sein, diese Grenzen, wenn die Entscheidung auf diesen Ansatz.InformationsquelleAutor der Antwort mikemaccana
Gut, dieser code:
Diese "richtige" fehlerhaftem HTML-Code, um die besten des Browsers. Wenn das für Sie hilfreich, es ist viel einfacher als zu versuchen, zu validieren, HTML.
InformationsquelleAutor der Antwort Niet the Dark Absol
Ich denke, dass dieser check ist strenger als HTML-Gültigkeit - es wird überprüft, dass der HTML-string entspricht der normalisierten browser-Darstellung.
Kasse die folgenden Beispiele:
InformationsquelleAutor der Antwort user3402701
Keiner der Lösungen bisher vorgelegt haben, ist zu tun, einen guten job in der Beantwortung der ursprünglichen Frage, vor allem, wenn es um
tldr >> überprüfen Sie die JSFiddle
Also habe ich die Eingabe der Antworten und Kommentare zu diesem Thema und eine Methode erstellt, die Folgendes macht:
<br/>
und leere Attribut Normierungen=""
werden nicht ignoriertGibt
normalisiert bedeutet, dass auf die Wiedergabe, der browser ignoriert oder Reparaturen manchmal bestimmte Teile der Eingabe (wie das hinzufügen von fehlenden schließen-tags für
<p>
und wandelt andere (wie single zu double quotes oder Codierung der kaufmännische und-Zeichen).Die Unterscheidung zwischen "Fehler" und "normalisiert" werden können, Kennzeichnen die Inhalte für den Nutzer ", wird dieser nicht gerendert, wie man es erwartet".
Meisten Zeiten normalisiert gibt wieder eine nur leicht veränderte version des original-html-string - immer noch, manchmal ist das Ergebnis ganz anders aus. Dies sollte verwendet werden, z.B. Kennzeichnen, die Benutzer-Eingabe zur weiteren überprüfung vor dem speichern in eine db oder macht Sie blind. (siehe JSFiddle Beispiele für die Normalisierung)
Die Schecks, die folgenden Ausnahmen in Betracht
image
und anderen tags mit einemsrc
Attribut 'entwaffnet' beim Rendern<br/>
>><br>
Konvertierung<p disabled>
>><p disabled="">
).innerHTML
z.B. in Attributwerten.
Hier finden Sie es in ein JSFiddle https://jsfiddle.net/abernh/twgj8bev/ , zusammen mit verschiedenen test-Fälle, einschließlich
.
InformationsquelleAutor der Antwort foobored
InformationsquelleAutor der Antwort Tarun
Verwendung von reinem JavaScript können Sie überprüfen, ob ein element vorhanden ist, verwenden Sie die folgende Funktion:
Verwenden Sie den folgenden code wir können dies testen, in Aktion:
HTML:
CSS:
JavaScript:
Es sein kann gefunden auf JSFiddle.
InformationsquelleAutor der Antwort Leviscus Tempris
Glück!
InformationsquelleAutor der Antwort David Castro
Hängt es von js-Bibliothek, die Sie verwenden.
Html validatod für node.js https://www.npmjs.com/package/html-validator
Html-validator für jQuery https://api.jquery.com/jquery.parsehtml/
Aber, wie bereits erwähnt, mit dem browser zu überprüfen gebrochen HTML ist eine tolle Idee:
InformationsquelleAutor der Antwort Eugene Kaurov