Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用纯javascript向脚本标记正确添加延迟属性_Javascript_Setattribute_Script Tag_Deferred Loading - Fatal编程技术网

使用纯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属性是布尔属性,指示脚本应如何执行>

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