为脚本标记提供ID

The*_*imp 60 html scripting standards

我遇到了一个场景,给script元素一个id属性可以轻松解决问题.然而,在阅读了w3schools和quirksmode的script元素后,似乎这样做可能会产生一些不可预见的后果.

有没有人遇到任何与浏览器有关的问题,如Chrome,Safari,FF3和IE 7?

bob*_*nce 95

它在所有当前浏览器中都很好.

唯一<script id>出错的浏览器是Netscape 4,我们很久很久以前就停止了关注.

这个quirksmode页面似乎已经过时了,它使用了language属性,脚本<!--隐藏和application/x-javascript.它如何避免建议<script>在<body>(并把它在<head>代替)在今天的鼓励的做法不一致.

如果我们谈论<script>属性兼容性问题:defer无处不在,所以不要依赖它; charset在任何地方都不起作用,并且服务脚本的Content-Type上的charset参数也没有,所以你的脚本字符集最好匹配页面; type应该始终是,text/javascript而不是编写RFC 4329的学生希望您使用的非工作替代方案之一.

  • 您的浏览器属性支持历史令我震惊!+1 (23认同)
  • 更新:2013年 - 是的,在脚本标记中添加id或class属性仍然是安全的:) (13认同)

niu*_*ech 9

请记住,设置idon any元素会引入一个与id属性同名的新全局变量:

id作为全局变量

  • 这是一个非常重要的观点!我最近通过CMS自动添加了ID,并且不得不将其更改为`data-id`,因为它覆盖了全局变量. (4认同)
  • 避免覆盖全局变量的一种方法是使用破折号 (`-`) 命名 ID,因为变量不能包含破折号,但 ID 可以。 (2认同)

Rob*_*sto 7

如果你仍然需要支持Netscape 4,你会遇到很多麻烦 - 以及其他开发者世界的怜悯和哀悼.

简短的回答,我不担心.


小智 6

我知道已经过去很长一段时间了,但我认为最好指出一下,当您查看W3 Schools 对 script 标签的定义时,您有时会看到

该标签还支持HTML 中的全局属性。

在这些属性中,ta-da,你会找到你可爱的 id。

对于很多标签来说也是如此,这肯定会给我们带来很大的灵活性,让我们从帽子里变出那些漂亮的技巧。