2011-05-11 16 views
12

가능한 중복은 :
Why don't self-closing script tags work?<script></script> 또는 <script />?

난 그냥 HTML에서 스크립트 태그로 weired 행동을 발견했다.

나는 웹 서버가 nginx이고, 나는 빠른 CGI와 PHP5를 사용했다. 다음과 같은 page.html이 있습니다.

<html> 
    <body> 
    <!-- <?php echo 'i am going to add php code here'; ?> --> 
    <script type="text/javascript" src="./my/javascript1.js" /> 
    <script type="text/javascript" src="./my/javascript2.js" /> 
    </body> 
</html> 

이 페이지가 웹 서버에서 직접 제공되는 경우 Java 스크립트가 제대로 작동합니다. 하지만 PHP5로 넘어 간다면 첫 번째 자바 스크립트 태그 만 실행 된 것 같습니다. 나는에 스크립트 블록을 변경한다면 :

<script type="text/javascript" src="./my/javascript1.js"></script> 
    <script type="text/javascript" src="./my/javascript2.js"></script> 

모든 것이 다시 작동합니다. 태그가 어떻게 닫혔는지 알아 차렸습니까? 그래, 그게 내가 여기서 물어 보는 이유야. 그 차이점은 무엇입니까? 그들은 같은 기능/의미를 지니고 있습니다. 게다가 내 웹 브라우저 (Chrome/IE9)에서받은 출력 HTML은 동일하지만 다르게 취급되는 이유는 무엇입니까?

+2

"php5로 넘어 갔다면"이라는게 무슨 뜻이야? – Nanne

+3

추가 읽기 : http://stackoverflow.com/questions/69913/why-dont-self-closing-script-tags-work – JohnP

+0

@Nanne는 Nginx에서 핸들을 설정하여 페이지가 PHP5에 의해 처리되도록합니다. – davidshen84

답변

9

script 태그는 유효한 코드가되기 위해 별도의 닫기 태그가 필요합니다. http://www.w3.org/TR/html401/interact/scripts.html#h-18.2.1

일부 브라우저는 자동 닫기 태그를 사용하고 다른 브라우저는 사용하지 않으며 다른 HTML 버전도 결과에 영향을 미칩니다. XHTML을 사용하지 않으면 자체 마감 태그가 없습니다.

PHP 엔진을 통해 파일을 전달해도 결과가 변경되지 않지만 잘못된 스크립트 태그를 수정하려고 시도했을 수 있습니다. 태그가 변경되었는지 확인하려면 브라우저에서 소스를 확인해야합니다.

+0

이 부분에 응답하고 싶습니다 -'이 페이지가 웹 서버에서 직접 제공되는 경우 자바 스크립트가 잘 작동합니다. 하지만 PHP5로 넘어 간다면? 나는 그가 PHP 대 HTML을 의미한다고 가정하고 있습니다. – JohnP

4

script 태그는 src 속성을 사용하더라도 닫는 태그가 있어야합니다. 그것을 피하면 바람직하지 않은 행동이 발생합니다.

-1

서버가 HTML 대신 XHTML을 출력하도록 구성되어있는 것으로 보입니다. HTML에는 <tag />과 같은 것들이 없습니다. 그러나 XML에는 XML이 있습니다.

두 경우 모두 문서 유형 선언을 확인하십시오. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 등이 문서의 시작 부분에 있습니다.

-3

기본적으로 HTML에 언급 된 DocType에 따라 달라집니다.

DocType이 표시된 경우 transitional XHTML이 경우 <script ... />처럼 스크립트 태그를 닫을 수 없습니다. 태그는 이와 같이 닫을 수 있습니다. <script ... ></script> 등등.

XHTML이 아닌 경우 브라우저 호환성에 따라 달라집니다.

참고로이 부분을 참조하십시오.귀하의 브라우저가 HTML을 해석

http://www.w3schools.com/tags/tag_doctype.asp

+3

올바르지 않습니다. 닫는 태그는 사용 된 HTML 버전에 관계없이 항상 필요합니다. – Guffa

+0

제가 위에서 언급 한 것은 100 % 권리입니다 (bookish는 아니지만). 그러나 대부분의 브라우저 (IE 6 포함)에서 작동합니다. –

+1

어떤 브라우저도 HTML에서'

0

방법은 그것이 HTML 파서되지 않기 때문에 PHP와는 아무 상관이있다. 일부 브라우저는이를 수락합니다. 다른 사람들은 ....이 또한 link을 확인하십시오. 더 많은 Q 문의 & 거의 같은 주제

관련 문제