0

IE9 のバグを修正するために、「DOCTYPE」宣言をページの上部に配置する必要がありました。

 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
 <?php
     require_once 'navBar.php';
 ?>

DOCTYPE をファイルの先頭に置くことで、IE9 の「バグ」を修正しました。

IE9 の「バグ」は、ファイルの上部に DOCTYPE がないと、インライン ブロック スタイルを持つ div がインライン ブロック スタイルを無視し、垂直にスタックされることでした。

ページにインライン ブロック スタイルの 3 つの div があり、Firefox と Android ブラウザーでは、インライン ブロックの 3 つの div が左から右に水平に 1 行に表示されます。

しかし、IE9 では、DOCTYPE を 1 行目に追加する必要がありました (2 行目ではなく、上部の php セクションの後ではなく、DOCTYPE を 1 行目に追加する必要がありました)。

その後、IE9 はインライン ブロック スタイルを尊重します。

問題は -- navbar.php 内で session_start() を呼び出します。

ご存じのように、session_start() ALSO は、ブラウザー出力が送信される前の最初の行である必要があります。そうしないと、errmsg が返されます。このような:

  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私のIDEはファイルをUTF-8として保存するので、BOMは問題ではありません。そして、私はすでにチェックしました-DOCTYPEの終わりとsession_start()の始まりの間に余分な空白はありません。 DOCTYPE がブラウザーに何かを送信するため、session_start() が壊れています。)

私の質問:

インライン ブロックと DOCTYPE および session_start() を保持するにはどうすればよいですか?

単純な UI スタイルの機能が、2 つの「MUST-BE-ON-LINE-1」コード要素 (DOCTYPE と session_start) を互いに突き合わせているのは悪いことです。


このSOの質問への回答には、いくつかの可能な方法が記載されています。

Spring MVC 3 と静的コンテンツの処理 - 何か不足していますか?

4

1 に答える 1

0

解決策は、require_once 'somefile.php'; から切り替えることでした。

require_once('somefile.php');

Firefox と Android ブラウザーは最初のスタイルで問題ありませんでしたが、IE9 には癖がありました。つまり、div のインライン ブロック スタイルを無視していました。

于 2012-04-12T05:01:05.423 に答える