或<script>?</script>

时间:2011-05-11 06:02:18

标签: javascript html

  

可能重复:
  Why don't self-closing script tags work?

我刚刚在HTML中找到了与脚本标记相关的行为。

我的网络服务器是nginx,我使用了FAST 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>

如果直接从Web服务器提供此页面,则java脚本运行良好。但如果它传递给PHP5,似乎只执行第一个java脚本标记。但是,如果我将脚本块更改为:

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

一切都有效。注意到标签是如何关闭的?是的,这就是我在这里问的原因。有什么不同?他们应该具有相同的功能/意义。此外,我的网络浏览器(Chrome / IE9)收到的输出HTML是相同的,但为什么区别对待?

5 个答案:

答案 0 :(得分:8)

脚本标记需要单独的结束标记才能成为有效代码。见http://www.w3.org/TR/html401/interact/scripts.html#h-18.2.1

某些浏览器会接受自动关闭标记,其他浏览器不接受,并且您使用的HTML版本也会影响结果。除非您使用XHTML,否则没有自动关闭标记。

通过PHP引擎传递文件不应该更改结果,但它可能会尝试更正不正确的脚本标记。您应该在浏览器中查看源代码以查看标签是否已更改。

答案 1 :(得分:4)

脚本标记需要具有结束标记,即使它使用src属性也是如此。避免它会导致不良行为。

答案 2 :(得分:0)

浏览器解释HTML的方式与PHP无关,因为它不是HTML解析器。一些浏览器接受它。其他人不......还要检查link。关于同一主题的更多Q&amp; A

答案 3 :(得分:-1)

您的服务器似乎配置为输出XHTML而不是HTML。 HTML没有<tag />这样的东西。但XML确实有它们。

在两种情况下检查文档类型声明。文档开头的<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"等。

答案 4 :(得分:-3)

这基本上取决于DocType中提及的HTML

如果提及DocType transitional XHTML,则不允许像<script ... />那样关闭脚本标记。它只允许像这样关闭标签。 <script ... ></script>等等。

如果DocTYpe不是XHTML,则在这种情况下取​​决于浏览器的兼容性。

作为参考,请参阅此...

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