2012-04-12 1 views
0

필요 DOCTYPE을 파일의 맨 위에 놓음으로써 IE9 '버그를 수정했습니다.'내가 페이지 상단의 'DOCTYPE'선언을 넣어 가지고 있던 IE9의 버그를 수정하기 위해 ..... <DOCTYPE의 HTML 이전으로 session_start()를 호출하는 등

IE9의 '버그'는 파일 상단의 DOCTYPE없이 - 인라인 블록 스타일을 가진 div는 인라인 블록 스타일을 무시하고 세로로 쌓아 올 것입니다.

인라인 블록 스타일의 페이지에는 3 개의 div가 있고 Firefox와 Android 브라우저에는 인라인 블록이있는 3 개의 div가 가로로 왼쪽에서 오른쪽으로 한 행에 나타납니다.

IE9에서는 첫 번째 줄로 DOCTYPE을 추가해야했습니다 (두 번째 줄이 아니라 맨 위의 PHP 섹션 뒤에 - DOCTYPE이 첫 번째 줄이어야 함).

그런 다음 IE9는 인라인 블록 스타일을 준수합니다.

문제는 navbar.php 안에 있습니다. 나는 session_start()를 호출합니다.

아시다시피 session_start()는 브라우저 출력을 보내기 전에 첫 번째 행이어야합니다. 그렇지 않으면 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 그래서 BOM은 문제가되지 않습니다 내가 이미 확인했습니다 UTF-8로 파일을 저장 - 나는 어디서나 DOCTYPE의 끝 사이에 여분의 공백이없는 그리고으로 session_start의 시작() 중 하나으로 session_start()가 있기 때문에 브라우저에 무언가를 보내는 DOCTYPE의 파괴된다)

내 질문 :..

내 인라인 블록을 유지할 수있는 방법

와 DOCTYPE과 session_start()?

간단한 UI 스타일의 기능이 서로 'MUST-BE-ON-LINE-1' 코드 요소 (DOCTYPE 및 session_start)에 맞지 않는 것은 좋지 않습니다.

+0

여분의 공백없이 페이지 상단에 있습니까? PHP는 서버 측이고 HTML은 클라이언트 측이므로 IE9가 페이지를 해석하기 전에 PHP가 사라져야합니다. –

+0

공백없이 IE9는 인라인 블록 스타일을 무시합니다. 이유를 모르겠다. 어쩌면 웹 서버는 PHP를 처리 한 후 페이지 상단에 뭔가를 넣을 수도 있습니다. 모르겠습니다. – wantTheBest

+0

충분히 공정하지만, 당신이 똑바로 쓴다고 말했을 때, require_once 이후 나 session_start 이후에 (자체적으로) 의미합니까? –

답변

0

해결책은 require_once 'somefile.php'에서 전환하는 것이 었습니다.

require_once를 ('somefile.php')

하는 단계;

파이어 폭스와 안드로이드 브라우저가 첫 번째 스타일에서는 괜찮 았지만, IE9는 기발한 것이 었습니다. 즉, div의 인라인 블록 스타일을 무시할 것입니다.

관련 문제