我遇到过这样一个场景: 给 script元素一个 id属性可以很容易地解决问题。然而,在阅读了 W3学校和 离奇莫德的 script元素之后,这样做似乎有些意外后果。
script
id
有没有人遇到过这些问题的浏览器,如 Chrome,Safari,FF3和 IE7了?
在目前所有的浏览器中都很好。
唯一搞错 <script id>的浏览器是 Netscape 4,我们很久很久以前就不关心它了。
<script id>
这个稀奇古怪的页面似乎严重过时了,因为它使用了 language属性、脚本 <!--隐藏和 application/x-javascript。它关于在 <body>中避免使用 <script>的建议(而将其放在 <head>中)与今天鼓励的做法不一致。
language
<!--
application/x-javascript
<body>
<script>
<head>
如果我们讨论的是 <script>属性兼容性问题: defer不能在任何地方工作,所以不要依赖它; charset不能在任何地方工作,所服务脚本的 Content-Type 上的字符集参数也不能,所以你的脚本字符集最好与页面匹配; type应该始终是 text/javascript,而不是那些写了 RFC4329的书呆子希望你使用的不能工作的替代品之一。
defer
charset
type
text/javascript
我不认为浏览器在 script元素中添加 id属性会有什么问题。
在我的一些通过 JavaScript 加载其他 JavaScript 的站点上,我添加了一个 class属性,以使引用它们更加容易。验证器没有抱怨。
class
如果你仍然不得不支持 Netscape 4,那么你将会遇到很多麻烦——同时也会受到其他开发者的同情和哀悼。
简而言之,我不担心。
我知道已经过去很长时间了,但我认为这将是很好的指出,当你看 W3学校脚本标签的定义,你看到在某一点
标记还支持 HTML 中的全局属性。
在这些特质中,你会找到你可爱的本我。
同样的道理也适用于很多标签,当我们从帽子中取出这些漂亮的技巧时,它们肯定会给我们带来很大的灵活性。
请记住,在任何元素上设置 id都会引入一个新的全局变量,其名称与 id属性相同: