<script src =“foo.js”> </script>和<script src =“foo.js”>之间的区别?

时间:2017-10-25 18:22:01

标签: javascript html conventions

这两种将javascript拉入页面的方法有什么区别?

&#xA;&#xA;
 &lt; script src =“foo.js”&gt;&lt; /脚本&gt;&#xA;  
&#xA;&#xA;

Vs:

&#xA;&#xA;
 &lt; script src = “foo.js”/&gt;&#xA;  
&#xA;&#xA;

脚本标签不会有子节点,因此无需分开开头和结束标签,对吗?就像你在表中有一个空行一样,你可以用&lt; tr /&gt; 代替&lt; tr&gt;&lt; / tr&gt; ?还是我离开基地?

&#xA;

2 个答案:

答案 0 :(得分:1)

简而言之,第一个是正确的,第二个不是,会导致您的页面无法正常呈现。

不允许script元素自行终止。它必须具有明确的结束标记。如果省略,浏览器会认为它之后的所有内容仍然是JavaScript,而不是正确处理它。

通过这个简单的例子看看你自己。这是<script src="foo.js"/>的第二种方法:

<!doctype html>
<html>
 <head>
   <script src="doesntmatter.js" />
   <title>Hello</title>
 </head>
 <body>
   <h1>Do you see me?</h1>
 </body>
</html>

现在是正确的版本<script src="foo.js"></script>

<!doctype html>
<html>
 <head>
   <script src="doesntmatter.js"></script>
   <title>Hello</title>
 </head>
 <body>
   <h1>Do you see me?</h1>
 </body>
</html>

<element />的自终止(XHTML)语法只能用于元素(禁止内容模型的元素 - 即结束标记没有为他们定义,不是可以拥有内容的元素,但你刚决定不给它任何。)

您可能不会将此语法用作为其定义了结束标记的标记的便利。

允许自终止语法的标记示例(来自MDN):

  • <area>
  • <base>
  • <br>
  • <col>
  • 跨栏存在时
  • <colgroup>
  • <command>
  • <embed>
  • <hr>
  • <img>
  • <input>
  • <keygen>
  • <link>
  • <meta>
  • <param>
  • <source>
  • <track>
  • <wbr>
  

就个人而言,我与同伴进行了多次激烈的辩论   多年来Stack Overflow成员(就像今天一样   事实)关于使用自我终止的最佳实践   元素。

     

我经常听到的论点是使用它们会使代码更清晰。   但是,怎么可能因为为了使用它们,你必须知道   使用它们是可以接受的。而且,如果你知道,那么   当你看到类似<br>之类的东西时,代码就像你一样清楚   已经知道<br>没有关闭!

     

然后论证变成了,“嗯,并不是说代码更清晰   对我来说,这是为了其他人,他们可能不知道<br>是不应该的   关闭。“这里的反驳是,如果他们不知道   哪些标签是和不应该被关闭,他们将使用它   语法在错误的地方(这个事实毫无疑问,如证据所示   你的问题和许多其他人喜欢它!)

     

最后一个论点是使用这种语法使代码成为有效的XML   这是构建所有HTML的好方法,以防万一   HTML需要被解析为XML。嗯,这是一个有效的观点。但,   对于大多数用例,这些天我们真的使用XHTML吗?当然,那里   可能是这仍然有意义的环境,但肯定不是   感谢JSON的主流。因此,建议将此语法作为最佳 -   实践是不合理的。

     

我强烈反对在非XML应用程序中使用自终止元素。使用它们什么都不买,而且正如您所见,可以引导   代码中的错误。

答案 1 :(得分:0)

第二个无效,你需要一个结束标记

https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script