等待Modernizr从用户脚本加载jQuery

时间:2012-09-30 06:06:55

标签: jquery greasemonkey userscripts modernizr

我正在开发Google Chrome用户脚本,通过jQuery增强了正在加载Modernizr's .load() method的网站。

我将使用该网站的jQuery实例,但是用户脚本在加载jQuery之前就开始执行了。

是否有一种确定性的方法可以从Greasemonkey脚本或用户脚本中拦截Modernizr的load() / complete机制?

或者轮询window[jQuery] / '$' in window等唯一解决方案?

(我试图避免加载我自己的jQuery实例,并且通过轮询我有时会错过我想要使用mutation observers拦截的文档的第一个更改。)

2 个答案:

答案 0 :(得分:0)

我不确定你想做什么,但是下面的脚本可能对你有所帮助。它会推迟你的html页面中的任何内联脚本,并且会在返回后由modernizr加载所有脚本后执行。

在modernizr加载函数之前定义下面的行。

docready=[],$=function(){return{ready:function(fn){docready.push(fn)}}},

在modernizr load complete上写下以下脚本

$ = jQuery;
jQuery(document).ready(function() {
    for(n in docready) docready[n]();
});

答案 1 :(得分:0)

听起来你需要等待一切加载后会触发的window.onload。

文档结束和文档空闲都保证在解析整个DOM之后运行,这是脚本开发人员通常感兴趣的事情。如果由于某种原因您确实需要在window.onload之后运行脚本,则可以检查document.readystate属性。如果它是“完成”,那么您可以假设已发生onload。如果不是,那么你可以听取onload。