async
属性是HTML5的最新功能,
这表示下载的文件不会调用document.write
,可以在处理页面时下载
但是我听说还有另一种异步加载脚本的方法,它向后兼容使用较旧的浏览器。
事实证明,我可以通过动态重新创建async
属性实现的行为在 JavaScript 中创建一个脚本 DOM 元素并将其附加到页面。
例:
var script = document.createElement('script');
script.src = 'http://camerastork.com/widget.js?product=1234';
script.async = true
...
因此,如果它适用于不支持async
的旧浏览器 - 怎么可能 - 我仍然可以使用.async
属性?
async
属性/属性比您想象的要旧(至少在某些浏览器谱系中)。但这有效的真正原因是大多数浏览器始终将通过 createElement
/appendChild
添加到 DOM 的所有script
元素视为"异步"(不需要script.async = true
)。几年前,只有几个浏览器同步处理它们(直到脚本被获取并执行后才执行下一行代码),并且有问题的浏览器已经更新了它们的行为。