Um einen IE9 Fehler zu beheben ich die Erklärung ‚DOCTYPE‘ setzen musste am oberen Rand der Seite:müssen session_start() vor <DOCTYPE HTML nennen ..... etc
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<?php
require_once 'navBar.php';
?>
Indem ich den DOCTYPE an die Spitze der Datei setzte, reparierte ich einen IE9-Fehler.
Der 'Fehler' in IE9 war - ohne die DOCTYPE an der Spitze der Datei - jedes div, das Inline-Block-Stil hatte, würde den Inline-Block-Stil ignorieren und wäre vertikal gestapelt.
Ich habe 3 divs auf der Seite mit Inline-Block-Stil und in Firefox und im Android Browser erscheinen die 3 divs mit Inline-Block in einer Reihe, horizontal von links nach rechts.
Aber in IE9, musste ich den DOCTYPE als erste Zeile hinzufügen (nicht die zweite Zeile, nicht nach dem PHP-Abschnitt an der Spitze - DOCTYPE musste die 1. Zeile sein).
DANN und nur dann wird IE9 den Inline-Block-Stil honorieren.
DAS PROBLEM IST - innerhalb navbar.php rufe ich session_start().
Wie Sie wissen, muss session_start() ALSO die erste Zeile sein, bevor eine Browser-Ausgabe gesendet wird. Du bekommst sonst einen errmsg. dies wie:
Warning: session_start() [function.session-start]: Cannot send
session cache limiter - headers already sent (output started at
/homepages/42/d329883313/htdocs/ourSite/landing_page.php:2) in
/homepages/42/d329883313/htdocs/ourSite/navBar.php on line 1
(ps meine IDE speichern Dateien als UTF-8, so dass der BOM ist nicht das Problem Und ich habe bereits überprüft - ich zusätzliche Leerzeichen zwischen dem Ende des DOCTYPE nicht überall hat. und der Beginn der session_start() entweder die session_start() bricht wegen der DOCTYPE etwas an den Browser gesendet wird)
meine Frage:..
Wie kann ich meinen Inline-Block und das DOCTYPE halten und session_start()?
Es ist schlecht, dass das Funktionieren eines einfachen UI-Stils zwei "MUST-BE-ON-LINE-1" Codeelemente gegeneinander schlägt (DOCTYPE und session_start).
Haben Sie versucht, Php session_start(); ?> oben auf der Seite ohne zusätzliche Leerzeichen? PHP ist Server-Seite und HTML ist Client-Seite, so dass die PHP sollte weg sein, bevor IE9 die Seite interpretiert. –
Wenn das Php vor dem DOCTYPE auftritt, ignoriert IE9 den Inline-Block in den divs, die ich auf der Seite habe. DOCTYPE ** muss ** in der obersten Zeile der Datei stehen. Ich verstehe deine Argumentation. Aber wenn ich DOCTYPE unter den Closing lege?> Ohne Leerzeichen, ignoriert IE9 meinen Inline-Block-Stil. Nicht sicher warum. Vielleicht legt der Webserver nach der Verarbeitung des PHP etwas oben auf der Seite, ich weiß es nicht. – wantTheBest
fair genug, aber wenn Sie sagen, Sie haben versucht, es direkt nach, meinst du nach der require_once oder nach session_start (für sich)? –