使用纯javascript向脚本标记正确添加延迟属性
所以我尝试添加一个延迟脚本标记,如下所示使用纯javascript向脚本标记正确添加延迟属性,javascript,setattribute,script-tag,deferred-loading,Javascript,Setattribute,Script Tag,Deferred Loading,所以我尝试添加一个延迟脚本标记,如下所示 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.getEle
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);
但是我发现result script标记将生成defer
属性,比如defer=true
,而不仅仅是defer
它们是一样的吗?如果我做defer=true
而不是defer
,这意味着什么
谢谢 我会将其更改为:
script.setAttribute("defer", "defer");
它们的行为通常是相同的(尽管文档在技术上规定了属性(如defer)的值不应为“真”或“假”)——或者至少在我在中使用过布尔属性的任何浏览器中是这样的。属性defer
通常被实现为在脚本标记中出现时生效。其值被忽略
也就是说,,规范规定布尔属性的值不应该存在,或者应该设置为自身,没有前导/尾随空格(大小写无关紧要)。因此,动态设置属性时,最好将该值保留为属性的名称
有关布尔属性(HTML5),请参阅本文档:
引用该文件:
许多属性都是布尔属性。元素上的布尔属性表示真值,而
缺少该属性表示假值
如果属性存在,则其值必须为空字符串
或者是一个ASCII值,该值不区分大小写,与属性的
规范名称,不带前导或尾随空格
注意:布尔属性上不允许值“true”和“false”。
要表示假值,必须省略该属性
总共
以下是延迟属性(HTML5)的文档:
它说:
async和defer属性是布尔属性,指示脚本应如何执行>
更新:如果将属性设置为空字符串,它将添加没有值的属性。这也是一个选项