检测并附加jQuery,如果没有加载纯Javascript和回退
Detect and append jQuery if not loaded with pure Javascript and a fallback
有没有人知道一种方法来检测jQuery库是否已加载,如果没有附加它并在加载到DOM后启动脚本作为回退解决方案?
这是我的脚本:
if (typeof jQuery == 'undefined') {
// if jQuery Library is not loaded
var script = document.createElement( 'script' );
script.type = 'text/javascript';
script.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js';
document.body.appendChild(script);
startScript();
} else {
// cool, jQuery Library is loaded
startScript();
}
function startScript() {
$.noConflict();
jQuery(document).ready(function($){
.... // my jquery code
});
}
当然,上面正确地附加了jQuery,但没有做任何事情,因为脚本在附加后立即启动。对此有什么提示吗?
我很感激任何答案。谢谢!
你很好,除了,正如你所说,你不能在附加新的script
元素后立即调用startScript
。相反,执行setTimeout
循环:
// ...
document.body.appendChild(script);
maybeStart();
maybeStart
看起来像这样的地方(不在if
体内,函数声明在那里无效):
function maybeStart() {
if (typeof jQuery === "undefined") {
setTimeout(maybeStart, 100);
}
else {
startScript();
}
}
这将检查jQuery是否已加载,如果没有,则等待10秒并再次检查。当找到jQuery时,它会调用你的startScript
。
你可能想在那里设置一个时间限制(以防jQuery永远不会加载,所以你不会永远循环)。
或者,您可以在 script
元素上挂接"load"样式的事件,但它的机制因浏览器而异。在某些浏览器上,它只是load
,比如说,一个img
元素;在IE(至少是旧版本)上,您必须使用readystatechange
,并且在某些版本的IE上两者都有效。所以你必须保留一个标志,这样你才能知道你是否已经触发了你的脚本,等等,然后......好吧,在你知道脚本创建一个众所周知的全局符号的情况下,上述情况就不那么复杂了(就像jQuery的情况一样)。
相关文章:
- ADF:有条件地加载javascript资源
- .load()函数赢得't加载javascript
- Gmaps搜索和kmz加载javascript
- 页面显示前加载Javascript警报
- 依赖于缓慢加载javascript的UI
- 在外部JS执行后加载JavaScript
- 在WordPress站点中加载jquery.js后加载javascript代码
- 图像未加载javascript、html、angular、imdb-api
- 加载 JavaScript 取决于以前异步加载的 JavaScript
- 预加载Javascript音频以在脚本中播放
- 无法加载Javascript错误XMLHttpRequest
- AJAX JSF请求后重新加载Javascript
- Rails Assets Pipeline从控制器和方法加载JavaScript
- 使用Require.js按照依赖关系的顺序加载JavaScript
- 正在等待加载文件(加载JavaScript)
- 仅在需要时加载javascript函数
- 直接导航到chrome中的页面时未加载Javascript脚本
- 异步加载Javascript
- IE7 未加载 JavaScript 文件
- 从框架中的函数异步加载 Javascript