异步加载JavaScript并与内联代码耦合
Loading JavaScript asynchronously and coupling with inline code
"降级脚本标签"的组合http://ejohn.org/blog/degrading-script-tags/Script DOM元素是异步加载外部JavaScript并与内联代码耦合的一种很好的模式。
Steve Souders在这篇文章中很好地描述了这种组合:http://www.stevesouders.com/blog/2008/12/27/coupling-async-scripts/
基本上,一旦加载了外部脚本,页面上的脚本就会由该外部脚本触发。我一直在想,如果外部脚本下载后运行的脚本试图添加事件处理程序,会发生什么。DOM可能尚未完成加载,因此添加事件处理程序可能会失败。
然而,Steve Souders的文章非常透彻,甚至还讨论了LazyLoading。这意味着在加载页面之前不会下载外部脚本(因为添加到DOM的脚本元素是在window.onload内完成的)。这确保了添加事件处理程序的工作。
所以一切看起来可能都很好,但我留下了一个小问题——考虑到我们一直在等待页面加载,用户可以与页面交互,甚至可能在添加事件处理程序之前离开页面。
我的琐事是合理的担忧吗?如果是这样的话,有没有强有力的方法来解决这个问题?
谢谢,Paul
您可以在DOM加载时将脚本元素添加到DOM中。只需在内联脚本中获取对head元素的引用并注入资产即可。通过这种方式,您可以在渲染DOM时触发浏览器加载外部脚本。
您是对的,因为注入的脚本加载在内存中并不意味着DOMContentLoaded事件已经启动。您必须侦听该事件,才能在加载所有外部资产时触发的回调中执行与DOM相关的操作。
- 从桌面读取python文件时高亮显示代码
- 如何将函数包装在函数中以避免代码重复
- 通过单击表单中的按钮,在代码生成中使用javascript生成字母数字代码
- 货币代码为欧元-金额的格式不应包含小数
- Regex代码只允许一个空格
- 如何将屏幕分辨率乘以 80%,然后在代码中使用
- 从var向代码隐藏函数传递值
- 如何动态插入jquery代码
- 如何在php变量中嵌入JQuery代码
- 代码不会验证
- 如何从rails中的代码中删除新行( )
- Angularjs代码未在匿名函数中运行
- 如何做到这一点,使代码在不传递条件后执行函数
- 如何在读取XLS/XLSX本地文件时,使用IE的javascript代码启用未标记为安全的ActiveX控件
- 面向对象的Javascript代码在IE7中不起作用
- 将 jQuery 代码添加到 Index.aspx 页面
- 为什么忽略了eval()代码中的语法错误
- 异步加载JavaScript并与内联代码耦合
- 如何使html和UI相关的javascript代码少耦合
- 如何在不复制代码的情况下消除耦合