2012-04-11 4 views
0

Ich habe sehr seltsames Problem:Strage HTML-Code Verhalten

meine Website-Engine verwendet PHP. wenn Seite erstellt, zeige ich es HTML-Code ist (mit broswer-Menü "Quelle html sehen"), und ich sehe dies (i nur wichtiger Teil des Codes hier Platz):

<div class="main_page_blogs_post2_item1"> 

      <div><p><p> 
    <div class="cblui_image_contaner_" align="center"> 

aber REAL HTML-Code unterscheidet sich von Quellcode - wenn ich diesen Code mit Firebug zu sehen, sehe ich diesen Code:

<div class="main_page_blogs_post2_item1"> 
<div> 
<p></p> 
<p> </p> 
<div class="cblui_image_contaner_" align="center"> 

ich meine, dass die Schließung </p>-Tags in hTML-Code und i d't autoadded werden wissen, warum. Ich dachte, dass es Javascript ist, aber ich versuche, die Seite mit Javascript deaktiviert zu laden - es hilft nicht. und ich denke, es ist php's Fehler, weil der Quellcode korrekt ist.

UPD: ich fand heraus, dass zu <p></p> Kombination in meinem Fall 2 Öffnung <p> Tags und 2 Schließen </p> Tags umgewandelt wurden. Alle anderen <p> Tags sind nicht betroffen.

Was kann es sein?

Danke

P.S. Entschuldigung für schlechtes Englisch :)

+0

'p' Tags können wie in Ihrem Quellcode" offen "bleiben, aber Browser rendern diese Tags mit einem schließenden Tag offen gelassen, wie von Firebug widerspiegelt. Nichts, worüber Sie sich Sorgen machen müssen - Sie könnten in Betracht ziehen, diese 'p'-Tags aus Gründen der Klarheit zu schließen. – kontur

+0

sie schließen später in meinem Code - ich habe nicht alle meinen Code hier, weil es zu groß. Der Browser ändert sowohl das Öffnen als auch das Schließen von Tags zu '

' combinatiom. Sieht so aus, als ob der browser 't meine'

' Tags und autoclose ''

'' Tags gefunden hat und später, wenn er schließende Tags gefunden hat, findet er öffnende Tags (weil er sie autoclose) und fügt den beiden Tags'

' hinzu Schließen '

' Tags. Aber ok, ich werde in dieser Richtung suchen, vielleicht gibt es seltsame Symbole, die Browser zwingen, dies zu tun – Dmitry

Antwort

2

Firebug zeigt den real generierten Code im Browser. Dies kann von dem HTML, das von Ihrem Server gesendet wird, abweichen (korrigiert, leicht geändert).

Es gibt drei Stufen:

  1. Ihr Servercode
  2. Der erzeugte HTML
  3. Was Ihr Browser daraus macht (= was Sie in Firebug sehen)
+0

ja, und ich denke, Problem ist in Schritt 3 (Ursache erzeugt HTML ist korrekt). Aber ich kann nicht verstehen, warum der Browser 2 meiner '

' Tags und 2 meiner'

' Tags zu '

' Kombinationen liefert :( – Dmitry

+0

da nach HTML Standards ein P Tag immer geschlossen sein muss oder ein . Endtag –

+0

sie geschlossen, ich habe Code wie folgt aus: '

ETWAS

' und es geändert haben '

ETWAS

' vielleicht gibt es seltsame Symbole am Anfang der 'SOMETHING'. Teil, die Browser zwingen, meine P-Tags zu autoclosure ... Ich werde es überprüfen – Dmitry

0

Firebug zeigt das Quelle korrigiert. Dies bedeutet, dass fehlende Tags hinzugefügt werden. Der richtige Weg, um das echte HTML zu sehen, ist "see source html" in Ihrem Browser.

+0

Ich legte echte HTML in der Spitze meiner Frage - es hat 2 offene P-Tags. Ich kann nicht unterschreiten, warum der Browser sie nach dem Start des Tags schließt. BTW, schließendes Tag dieses P wird auch auf '

' Kombination geändert – Dmitry

0

Während es technisch in Ordnung ist, offene <p> Tags zu haben, schätze ich, dass der Browser sie automatisch schließt, wenn sie auf das nächste Block-Tag stoßen. Verwenden Sie <br/> Tags, um Zeilenumbrüche hinzuzufügen, oder fügen Sie Text zu Ihren <p> Knoten hinzu.

Der Browser mit Eingabe wie umgehen können:

<p>Lorem ipsum 
<p>Foobar text 

Und wird es automatisch interpretieren, als ob es

lesen
<p>Lorem ipsum</p> 
<p>Foobar text</p> 

So Ihr Code

<div> 
<p><p> 
<div> .... 

wird:

<div> 
<p></p><p></p> 
<div> .... 

Probieren Sie einen HTML-Doctype und bleiben Sie mit den HTML/XML-Regeln dafür. Machen Sie Ihren HTML-Fehler frei und testen Sie ihn mit the w3c validator.Als Faustregel gilt: Verwenden Sie keine <p> Tags, ohne sie zu schließen, und wickeln Sie sie auch nicht um andere Block-Tags.