0

我正在研究一个谷歌浏览器用户脚本,它增强了一个通过Modernizr 的方法加载jQuery的网站。.load()

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

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

还是轮询window[jQuery]/'$' in window等是唯一的解决方案?

(我试图避免加载我自己的 jQuery 实例,并且通过轮询,我有时会错过对要使用突变观察者拦截的文档的第一次更改。)

4

2 回答 2

0

听起来您需要等待一切都已加载时触发的 window.onload 。

Document-end 和 document-idle 都保证在整个 DOM 被解析后运行,这通常是脚本开发人员感兴趣的事情。如果由于某种原因你真的需要你的脚本在 window.onload 之后运行,你可以检查 document.readystate 属性。如果它是“完整的”,那么您可以假设已经发生了 onload。如果不是,那么您可以监听 onload。

于 2012-11-16T18:08:14.830 回答
0

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

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

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

在modernizr加载完成时写下脚本

$ = jQuery;
jQuery(document).ready(function() {
    for(n in docready) docready[n]();
});
于 2012-10-19T14:37:26.727 回答