使用带有 jQuery“未定义”的 Javascript 加载器
我正在使用 Javascript 加载器 [ requireJS ],它与内容并行加载脚本 - 但是,我有一个问题。即
require('http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js');
通常 - 作为“备份” - 我使用过
<script type="text/javascript">
if (typeof jQuery == 'undefined') {
document.write(unescape("%3Cscript src='/scripts/jquery-1.4.4.min.js' type='text/javascript'%3E%3C/script%3E"));
}
</script>
但是,当使用 java 脚本加载器时 - 这将始终呈现 jQuery“未定义” - 因为 JS 和内容是并行加载的。
效果基本上是您正在加载 jQuery 2x - 即通过 javascript 加载器加载 1x,通过“jquery == undefined”加载 1x。
如何使“备份”与 javascript 加载器一起工作?
I am using a Javascript Loader [ requireJS ] which loads scripts in parallel to content - however, I have a problem. i.e.
require('http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js');
Typically - as a 'backup' - I've used
<script type="text/javascript">
if (typeof jQuery == 'undefined') {
document.write(unescape("%3Cscript src='/scripts/jquery-1.4.4.min.js' type='text/javascript'%3E%3C/script%3E"));
}
</script>
However, when using a java-script loader - this will ALWAYS render jQuery "undefined" - because JS and content is loaded in parallel.
The effect is basically that you are loading jQuery 2x - i.e. 1x through your javascript loader and 1 through "jquery == undefined".
How can I make the "backup" work with a javascript loader ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
据我所知,requirejs 通常是这样使用的:
依赖于 jQuery 的函数只有在 jQuery 加载时才会被调用。但如果 jQuery 无法加载,依赖它的代码将永远不会被执行。
由于您想在这种情况下尝试使用本地 jQuery,因此您可能应该捕获脚本加载超时错误并尝试从其他源加载 jQuery。 (但请注意,超时错误的速度很慢。)
docs 中有关错误处理的信息很少:
我认为,代码可能如下所示(未经测试):
As far as I know,
requirejs
is usually used like this:Function that depends on jQuery will be called only when jQuery is loaded. But if jQuery fails to load, code that depends on it will never be executed.
Since you want to try and use local jQuery in this case, you should probably catch the script load timeout error and try to load jQuery from another source. (But note that timeout errors are slow.)
There's little information on error handling in docs:
I think, the code may look like this (not tested):