从网络面板看,当您通过Modernizr.load加载脚本时,它实际上并不会阻止$(document).ready()。
所以理论上,假设我通过Modernizr添加json2.js,而另一个开发人员试图在$(document).ready()中使用JSON.parse,他们的脚本实际上可能会因为竞争条件而中断。
是否有可能在不试图警告所有代码签到的情况下解决这个问题?
答案 0 :(得分:4)
我会这样看待:使用Modernizr(和浏览器测试)来加载Javascript文件是一个非常笼统的设计决策,无论如何,团队中的每个人都需要注意。
但是,您可能希望实现(如果您还没有)应用程序的某种初始化,这应该是最后一件事 - 在加载完所有内容之后。然后可以在yepnope回调中执行此初始化,显然甚至在$(document).ready()
包装器中。
Yepnope在“共同陷阱”中指出了这一情况:
仅仅因为您的脚本已完成,并不意味着文档已准备就绪。 不要忘记你可以在你的内部使用文档就绪回调 yepnope回调。如果你正在玩弄DOM,我们会非常重视 鼓励您这样做,因为您的测试环境可能会起作用 与生产服务器不同,速度非常快 不同。
为了完整起见:
如果不进一步检查它们,请参阅以下有关如何处理document.ready + Modernizr.load
的其他一些想法:How can I use yepnope.js with $(document).ready() effectively?和https://stackoverflow.com/a/6767886/564721