Yepnope和“Proxy” – jQuery的ready()函数

我(非常)慢慢地获得了一个大型的静态文件站点,以及最新的所有好东西。 我使用yepnope(与新的Modernizr.load打包)来处理异步依赖加载,同时我需要它与当前代码库向后兼容。

这需要我在yepnope()的包装器中包装yepnope()站点范围内的每个jQuery调用(在不久的将来要完成的任务太大yepnope()或者更有创意的解决方案是通过我自己的代理 jQuery的ready()函数,并且延迟任何$代码的执行,直到来自yepnope的回调准备好……一旦yepnope测试满足jQuery的准备,jQuery的实际ready()函数将成为处理程序。 合理?

现在的问题:

我在这里制造灾难吗? 这是一个适合我的短期问题的解决方案,在一个糟糕的实施广泛的意大利面条DOM中心代码?

更新#3

一个更经过深思熟虑的方法,也可以解释匿名函数直接传递给jQuery的非就绪问题。 这是尽可能少地保留$(function(){})调用以及$(document).ready()调用的function的第三次尝试。

  (function( window, undefined ) { var jQuery = (function(fn) { if (typeof fn === 'function') { yepnope({ test: window.jQuery.length, complete: function() { fn(); } }); } var jQuery = _jQuery = window.jQuery, _$ = window.$; jQuery = jQuery.prototype = { constructor: jQuery, ready: function( fn ) { yepnope({ test: window.jQuery.length, complete: function() { fn(); } }); } }; return jQuery; }); window.jQuery = window.$ = jQuery; })(window); 

这很性感,因为虽然它复制了jQuery的加载行为,但它没有长度,本质上……通过使用yepnope来测试window.jQuery.length ,它只会在加载REAL jQuery时返回true (代理没有length )!

我恳切地寻求任何批评 – 特别是来自Alex Sexton 🙂 lol

尝试使用philwinkle的例子,它不起作用(至少得到的temp jQuery变量在FF3.6中有.length prop)。

谷歌搜索了一段时间,找到了jQl,异步jQuery加载器 ,它有一种方法来处理在实际jQuery加载之前调用$(document).ready。 借用一些代码得到: