【问题标题】:Giving the script tag an ID给脚本标签一个 ID
【发布时间】:2011-02-14 01:09:17
【问题描述】:

我遇到了一个场景,给script 元素一个id 属性可以轻松解决问题。但是,在阅读了 w3schoolsquirksmode 上的 script 元素后,似乎这样做可能会产生一些无法预料的后果。

有没有人在使用 Chrome、Safari、FF3 up 和 IE 7 up 等浏览器时遇到过这些问题?

【问题讨论】:

  • 这是一个老问题,但 Google 跟踪代码管理器似乎去掉了“id”属性,因此可能值得投资一种备用方法(也许)。

标签: html standards scripting


【解决方案1】:

目前所有浏览器都可以。

唯一出现<script id> 错误的浏览器是Netscape 4,我们很久很久以前就不再关心它了。

那个 quirksmode 页面似乎已经过时了,它使用了language 属性、脚本<!-- 隐藏和application/x-javascript。它关于在 <body> 中避免 <script>(并将其放在 <head> 中)的建议与当今鼓励的做法不一致。

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 这是非常重要的一点!我最近通过 CMS 自动添加了 ID,不得不将其更改为 data-id,因为它覆盖了全局变量。
    • 避免覆盖全局变量的一种方法是使用破折号 (-) 命名 ID,因为变量不能包含破折号,但 ID 可以。
    【解决方案3】:

    如果您仍然需要支持 Netscape 4,那么您将遇到很多麻烦 - 以及其他开发人员世界的遗憾和哀悼。

    简短的回答,我不会担心的。

    【讨论】:

      【解决方案4】:

      我知道已经过去了很长时间,但我认为最好指出当您查看 W3 Schools definition of the script tag 时,您会在某个时候看到

      该标签还支持Global Attributes in HTML

      在这些属性中,ta-da,你会发现你可爱的身份。

      很多标签也是如此,这肯定会给我们带来很大的灵活性,让我们从帽子里拿出那些漂亮的把戏。

      【讨论】:

        【解决方案5】:

        我认为通过将id 属性添加到script 元素,浏览器不会出现问题。

        在我的一些网站上,通过 JavaScript 加载额外的 JavaScript,我添加了一个 class 属性以使引用它们更容易。验证者没有抱怨。

        【讨论】:

          猜你喜欢
          • 2012-01-30
          • 1970-01-01
          • 2017-10-23
          • 2020-10-18
          • 1970-01-01
          • 2011-11-16
          • 2012-05-29
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多