Modernizr vs $(document).ready()

时间:2012-01-02 07:11:20

标签: jquery modernizr document-ready

从网络面板看,当您通过Modernizr.load加载脚本时,它实际上并不会阻止$(document).ready()。

所以理论上,假设我通过Modernizr添加json2.js,而另一个开发人员试图在$(document).ready()中使用JSON.parse,他们的脚本实际上可能会因为竞争条件而中断。

是否有可能在不试图警告所有代码签到的情况下解决这个问题?

1 个答案:

答案 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