首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用纯javascript向脚本标签正确添加defer属性

使用纯javascript向脚本标签正确添加defer属性
EN

Stack Overflow用户
提问于 2017-03-24 03:34:55
回答 2查看 12.9K关注 0票数 12

因此,我尝试添加一个延迟脚本标记,如下所示

代码语言:javascript
运行
复制
const script = document.createElement('script');
  script.setAttribute('src', '/script.js');
  script.setAttribute('type', 'text/javascript');
  script.setAttribute('defer', true);//this is the code in question!
  document.getElementsByTagName('body')[0].appendChild(script);

但我发现结果脚本标记将生成类似于defer=truedefer属性,而不仅仅是defer

它们是一样的吗?如果我使用defer=true而不是defer,这意味着什么

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-24 03:36:39

我会将其更改为:

代码语言:javascript
运行
复制
script.setAttribute("defer", "defer");

它们的行为通常是一样的(尽管文档在技术上规定了一个属性的值不应该是"true“或”false") -或者至少在我使用过布尔属性的任何浏览器中都是如此。属性defer通常被实现为在脚本标签中出现时生效。它的值被忽略。

作为,规范规定布尔属性的值不应该存在,否则应该设置为自身,没有前导/尾随空格(大小写无关紧要)。因此,在动态设置属性时,最好将该值保留为属性的名称。

有关布尔属性(HTML5)的信息,请参阅以下文档:https://www.w3.org/TR/html5/infrastructure.html#boolean-attribute

引用自该文档:

许多属性都是布尔属性。元素上存在布尔属性表示真值,不存在该属性表示假值。

如果该属性存在,则其值必须是空字符串,或者是与属性规范名称不区分大小写的ASCII匹配的值,并且没有前导空格或尾随空格。

注意:布尔属性不允许值"true“和"false”。要表示false值,必须完全省略该属性。

defer属性的文档(HTML5):https://www.w3.org/TR/html5/scripting-1.html#attr-script-defer

它写道:

异步和延迟属性是布尔型属性,用于指示应如何执行脚本。

更新:看起来,如果你将一个属性设置为空字符串,它将添加没有值的属性。这也是一种选择。

票数 25
EN

Stack Overflow用户

发布于 2021-10-21 16:44:33

这对我很有效:(chrome 94)

script.defer = true;

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42985437

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档