我正在尝试修改各种加载器,因此在调用main函数之前可以处理多个脚本。这应该加载jQuery,然后加载jQueryUI,然后调用main()来实际启动用户脚本。但是,它确实循环,但是当它到达main()时,我从Chrome中得到一个关于jQuery未定义的控制台错误。
!function loader (i) {
var requires = [ 'http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js'
, 'https://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js'
];
var loadScript = function (i) {
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = requires[i];
script.onload = (++i === requires.length) ? function () { loader(i); }
: function () { main(); }
document.head.appendChild(script);
};
loadScript(i || 0);
}();
function main () {
console.log(jQuery.version);
console.log(jQuery.ui.version);
}
答案 0 :(得分:0)
这是我提出的最终剧本,如果有人正在寻找这种类型的东西。 http://userscripts.org/scripts/review/123588
彼拉多用三元组抓住了它的一部分。 Nate B也有部分内容,jQuery使用jQuery.fn.jquery(但UI不一致并使用jQuery.ui.version)。
很高兴弄清楚如何跳过中间的包装位,对于第三方来说,但这很有用。 :)
答案 1 :(得分:-1)
我认为jQuery.version
不是有效的属性,而是返回undefined
。在那里尝试$.fn.jquery
,看看会发生什么。