2012-03-24 3 views
2
P&G 
P&ampG 
P&G 

Diese sind alle gleich. Ist die Verwendung spezieller Entitäten nur für Javascript/URL?&, & amp; & Alle verhalten sich ähnlich in HTML. Wie und warum?

+2

P & amp; G ist nicht gültig. Einige Browser reparieren das automatisch für Sie. –

+0

Auto-Reparatur ...? OK! Ich würde gerne Dokumentationen/Handbücher/Infos zu diesen häufiger lesen. –

+1

Ja, einige Browser, aber nicht alle! –

Antwort

6

Sie bedeuten nicht das Gleiche.

P&G enthält eine undefinierte Entity-Referenz &G, wie ein Validator Ihnen sagen würde. Was Browser mit solchen Referenzen tun, ist, dass sie wörtlich behandelt werden. Wenn Browser neue Entitäten erkennen, können seltsame Dinge passieren. Und sie machen es jetzt, da die hinzugefügten entities as per HTML5 drafts hinzugefügt werden. Übrigens ist &G nicht unter ihnen.

P&ampG ist ein ziemlich ähnlicher Fall, außer dass einige Browser mit gebrochenen Parsern den &amp Teil fälschlicherweise als & Zeichen nehmen.

P&G ist eine korrekte Schreibweise, die für P steht & G.

Das hat nichts mit JavaScript zu tun, und nichts mit URLs zu tun, mehr als HTML-Dokument Inhalt im Allgemeinen. Kaufmännisches Und-Zeichen werden oft in URLs benötigt, aber das macht das Problem nicht zu einer Frage von URLs.JavaScript-Code wird oft in ein script-Element geschrieben, in dem je nach HTML-Version spezielle Regeln für das Parsen gelten können, dies hängt jedoch vom Inhaltsmodell des Elements ab. (Das style Element ist ein ähnlicher Fall.)

+1

Die Verarbeitung von 'P & ampG' als' P & G' ist nicht das Ergebnis eines "kaputten" Parsers, sondern eine Voraussetzung für einen HTML5-Parser. Sie finden die Liste der benannten Zeichenreferenzen, die ohne abschließendes Semikolon interpretiert werden sollen, am Ende der Entitätsliste, mit der Sie verknüpfen. – Alohci

+1

@ Alohci, veröffentlichte HTML-Spezifikationen erfordern, dass eine Referenz zuerst auf der lexikalischen Ebene analysiert wird (alle Namenszeichen, die dem '&' folgen) und erst danach mit Definitionen von Entitäten verglichen wird. HTML5 befindet sich auf Draft-Ebene (work in progress) und vage über das Problem, aber http://validator.w3.org markiert "& ampG" selbst im HTML5-Modus als Fehler. –

+1

Ja, es stimmt nicht mit einer Webseite überein, aber ich denke nicht, dass die Anforderung überhaupt vage ist, was Parser tun müssen, um in dieser Situation konform zu sein. (Ich habe einen HTML5-Parser in C# implementiert, und obwohl es ein bisschen fummelig ist, mit dem Konsum/Nicht-Konsum von Zeichen dort umzugehen, war ich nie im Zweifel, was erforderlich war). Obwohl die Spezifikation im Entwurf vorliegt (beim letzten Aufruf), ist dies für die Abwärtskompatibilität mit realen Webseiten erforderlich, so dass die Wahrscheinlichkeit einer Änderung gering ist. – Alohci

1

Für optimale Ergebnisse sollten Sie immer die volle Form &. Zeitraum.

Nun, außer in Umgebungen, die einen CDATA Inhaltstyp haben. In HTML wären das Elemente wie <script>, <style>, <xmp>, <listing> und so weiter. In XHTML nur in expliziten CDATA-Blöcken, begrenzt durch <![CDATA[ .. ]]>.

Wenn Sie die Referenz nicht vollständig ausschreiben, werden nicht alle Browser so angezeigt, wie Sie möchten, und Sie könnten später Probleme bekommen, wenn Sie versehentlich Dinge wie "Wählen Sie & kopieren & einfügen" eingeben.

1

Nr Selbst HTML nicht, sie verstehen und somit sind sie Sonderzeichen bezeichnet.

Allerdings korrigieren moderne Browser das für Sie. (Beispiel für eine moderne Browserkorrektur):

Erstellen Sie ein Dokument mit der Erweiterung .htm | .html und speichern Sie es im Dokument, nachdem Sie <h1>hi!</h1> eingegeben haben. Sie können eine Überschrift sehen. was falsch sein sollte ... (zurück zum Thema)

Es gibt Hunderte dieser kleinen Saugern. aber Hauptsache ist, versuchen, den Standard zu folgen, wie es:

  1. hilft Ihrem Kollegen verstehen Sie Ihren Code besser.
  2. nur weil Ihr Browser Sie tun kann, ist dies eine alte Entschuldigung.
  3. Sie können in Schwierigkeiten geraten, ohne dass Sie sich erinnern, wie?
  4. darüber zu lesen in der vollständigen Ref oder http://www.w3schools.com/tags/ref_entities.asp

Als Versuch <>10<20<> in Browser zu schreiben, wird es Ihnen zeigen, wie Sie es, wenn neuer, moderner Browser, wenn alt ist, wer weiß, was passieren würde?

+0

Saini Ji, Sie haben Recht und so ist die Überschrift von "Hallo!". Ich kenne die speziellen Entitäten .... war nur neugierig auf mein zweites/mittleres Beispiel. –