Javascript 延迟内联jQuery就绪/绑定函数

Javascript 延迟内联jQuery就绪/绑定函数,javascript,jquery,Javascript,Jquery,我在页面中执行了一些无法移动的遗留jQuery,例如 jQuery(document).bind('click', function(){ console.log('click'); }); 现在,jQuery的加载位于页面底部“在上面的内联代码之后”,页面错误“jQuery未定义” 我想使用与此类似的模式: var deferInlineScripts = []; window.$ = function(inlineFunction) { deferInlineSc

我在页面中执行了一些无法移动的遗留jQuery,例如

jQuery(document).bind('click', function(){
    console.log('click');
});
现在,jQuery的加载位于页面底部“在上面的内联代码之后”,页面错误“jQuery未定义”

我想使用与此类似的模式:

var deferInlineScripts = []; 
    window.$ = function(inlineFunction) {
    deferInlineScripts.push(inlineFunction);
};
在这里工作:

它接受内联脚本并使用


下面是我想修复的一个小问题,以便在加载jQuery后执行Bind&Ready函数。

最初将
window.jQuery
定义为一个返回代理的函数。此代理将允许执行后续的任意psuedo属性查找(例如
jQuery(document).bind中的
.bind
)。访问的属性和最终调用结果函数的参数可以存储在数组中,然后在正确加载jQuery后执行


const deferCallHandler={
get:函数(jqFirstArg、jqProp){
返回函数(…secondArgs){
deferredInlineScripts.push({
jqFirstArg,
jqProp,
第二个参数,
});
}
}
};
常量deferredInlineScripts=[];
window.jQuery=函数(jqFirstArg){
返回新代理(jqFirstArg、DelferCallHandler);
}
document.addEventListener('DOMContentLoaded',function(){
//现在,window.jQuery已正确分配给真正的jQuery对象
forEach({jqFirstArg,jqProp,secondArgs})=>{
jQuery(jqFirstArg)[jqProp](…secondArgs);
});
});
/*无法更改此代码*/
jQuery(document).bind('click',function()){
console.log('click');
});
jQuery(文档).ready(函数(){
console.log('ready');
});
某些元素

您遵循的模式不太正确。您正在为
jQuery
创建一个模糊函数,它对作为参数传递给它的任何内容进行排队。但实际上,
document
是传递给它的,而不是
bind
ready
函数。因此它在数组中排队
文档
,当然,它不是一个函数,正如您的小提琴中的控制台错误所指出的那样;是不正确的,这是需要重写的函数不幸的是我的JS技能没有达到复杂性
for (i = 0; i < deferInlineScripts.length; i++) {
    deferInlineScripts[i]();
}
jQuery(document).bind('click', function(){
    console.log('click');
});
jQuery(document).ready(function(){
    console.log('ready');
});