<script></script> or <script />?

14

可能重复:
为什么自闭合的 script 标签不起作用?

我发现了一个 HTML 中 script 标签的奇怪行为。

我的 Web 服务器是 Nginx,我使用 FastCGI 和 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服务器提供,那么JavaScript能够正常工作。但是如果它被传递到PHP5,则似乎只有第一个

2
“if it passed to php5” 是什么意思? - Nanne
3
进一步阅读:https://dev59.com/R3VD5IYBdhLWcg3wJIIK为什么自闭合的 script 标签不起作用? - JohnP
@Nanne 在 Nginx 中设置一个句柄,以便页面由 PHP5 处理。 - David S.
5个回答

8

想试着回答这部分内容 - “如果此页面直接从Web服务器提供,则JavaScript可以正常工作。但是如果传递给PHP5”,我认为他的意思是PHP vs HTML。 - JohnP

4

script标签需要有闭合标签,即使它使用了src属性。避免这种情况会导致不良行为。


0

你的浏览器解释HTML的方式与PHP无关,因为它不是HTML解析器。一些浏览器接受它,而其他浏览器则不接受... 此外,请查看link以获取更多有关相同主题的问答。


-1

看起来您的服务器配置为输出XHTML而不是HTML。 HTML没有<tag />这样的东西。但XML有。

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


-3

这基本上取决于您在HTML中提到的DocType

如果提到了过渡式XHTML的DocType,那么它将不允许像这样关闭脚本标记的方式<script ... />。 它只允许像这样关闭标记。<script ... ></script>等等。

如果DocTypeXHTML不同,则取决于浏览器兼容性情况。

有关参考,请参见此处...

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


3
无论使用哪个版本的HTML,都必须添加闭合标签。 "That is not correct. The closing tag is always required, regardless of the HTML version used." - Guffa
我上面提到的事情是100%正确的(虽然不太正式),但它可以在大多数浏览器中使用(包括IE6)。 - Naveed Butt
1
我所知道的浏览器都不允许在任何HTML中使用<script ... />。这是无效的HTML,我见过的每个浏览器都将其视为没有关闭标签的<script ... >,这会导致不同浏览器之间出现各种不同但总是错误的行为。 - cHao
3
顺便说一下,w3schools不适合作为这种东西的参考。 - cHao
1
@Naveed:http://www.w3.org/TR/xhtml1 - BoltClock
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接