簡體   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