我刚刚在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是相同的,但为什么区别对待?
答案 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
,则在这种情况下取决于浏览器的兼容性。
作为参考,请参阅此...