【发布时间】:2012-01-20 17:08:17
【问题描述】:
我正在尝试修改各种加载器,以便在调用主函数之前可以处理多个脚本。这应该加载 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);
}
【问题讨论】:
-
!function是怎么回事? -
同(函数{})();
-
为什么忽略了
document.appendChild(script);不是有效操作的错误? -
对不起 - 看起来它以某种方式被丢弃在我的复制/粘贴中。 /我编辑:P
-
ianbarker:在用户脚本上下文中,并且使用依赖于 jQuery 的 jQueryUI(以及您可能想要的任何 jQuery 插件),您别无选择。
标签: jquery google-chrome greasemonkey preloader userscripts