繁体   English   中英

Javascript不必放在<script> tag?

[英]Javascript doesn't have to be inside a <script> tag?

页面加载完成后,以下代码似乎可以执行Javascript。

<html>
<head>
<title>test page</title>
</head>
<body onload="alert('The page has finished loading');">
</div>
</body>
</html>

我认为所有Javascript代码都必须封装在<script></script> 那么,为什么不是这种情况呢?

这是一个内联事件处理程序 ,其中包含Javascript代码。
他们通常不满意。

请注意,Javascript也可以出现在javascript: URI(例如bookmarklet)中。

可以通过以下方式将JavaScript包含在页面中:

  • 引用外部文件的脚本元素
  • 内联脚本元素
  • 内部事件属性 (如您的示例)
  • 出于安全原因,任何接受URI且不阻止JS URI的地方(曾经<img src="javascript:someScriptHere()"> ,但<a href="javascript:someScriptHere()">仍然可行)
  • CSS的各种专有扩展(例如expression

一般而言,仅推荐其中一种技术。 避免其他人。

并非所有JavaScript都需要封装。 这是仅剥离标签以删除XSS不足的部分原因。

这叫做“内联JavaScript”! 像内联CSS一样,内联JavaScript也不是一个好习惯。

  • 我们不应该使用内联事件处理程序的原因之一是,它要求我们将JavaScript代码与HTML / XHTML代码混合在一起。

  • 其他原因是,这意味着使用大量事件处理程序将HTML代码弄乱,而通过脚本编写,我们可以将事件处理程序应用于页面的任何部分,甚至可以使用单个事件处理程序来处理跨多个元素的事件。

  • 内容的HTML,演示文稿的CSS和行为的JavaScript。 通过将这些部分之间的行为分开,我们可以提高它们的维护能力,并可以在各种情况下使用。

这并不是说内联事件处理程序始终是一件坏事。 取而代之的是,意识到使用它们成为了能够更灵活地管理和维护它们的限制。 请参阅以下文章,以获取有关此问题的更多信息:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM