好吧,有这么多方法,但是,我只对1感兴趣,但是使用哪种方法呢?不知道...
基本上,这是两难的。在页面正文中将会有对 jQuery 的后续调用。它需要知道之前是否已经定义了 jQuery,如果是,则不要重新加载它,但如果没有,则加载 jQuery。现在,除此之外,我不需要运行任何 jQuery 代码,直到 jQuery 确实被定义。
这是我一直在使用的,但它是有缺陷的,因为我在 Google Chrome 中的后续调用中遇到错误(声明未定义 jQuery)
这是我的代码:
if(!window.jQuery)
{
var script = document.createElement("script");
script.type = "text/javascript";
script.async = false;
script.src = "//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js";
var oScripts = document.getElementsByTagName("script");
var s = oScripts[0];
s.parentNode.insertBefore(script, s);
}
function dpmodPollBgColor()
{
jQuery(document).ready(function($){
// Uncaught ReferenceError: jQuery is not defined
$.cssHooks.backgroundColor = {
get: function(elem) {
if (elem.currentStyle)
var bg = elem.currentStyle["backgroundColor"];
else if (window.getComputedStyle)
var bg = document.defaultView.getComputedStyle(elem,
null).getPropertyValue("background-color");
if (bg.search("rgb") == -1)
return bg;
else {
bg = bg.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);
function hex(x) {
return ("0" + parseInt(x).toString(16)).slice(-2);
}
return "#" + hex(bg[1]) + hex(bg[2]) + hex(bg[3]);
}
}
}
$(".bar-container").each(function() {
if($(this).children(":first").css("width") != "0px")
{
var hexColor = $(this).children(":first").css("background-color");
var bgColor = shadeColor(hexColor, 50);
$(this).css({"background-color": bgColor});
}
});
});
}
if (document.addEventListener)
window.addEventListener("DOMContentLoaded", dpmodPollBgColor, false);
else
addLoadEvent(dpmodPollBgColor);
我不想使用onReadyStateChange
,因为我不希望它干扰(可能是)同一页面上的其他 AJAX 调用。
基本上,我需要一种方法来保证 1. 如果没有加载 jQuery,它将加载它。2. jQuery 真正加载完成后,才会执行 jQuery 里面的功能。3. 它不会干扰页面上的任何其他 jQuery 代码,无论为 jQuery 定义什么变量。例如,如果其他一些代码将 jQuery 定义为usin
, 而不是默认的$
.
我发现自己很难让多个 jQuery 实例相互协调工作。
我现在使用的方法是这样的:
如果未通过该语句加载,请使用定义 jQuery 的 if
if(!window.jQuery)
语句。定义一个函数,并将所有 jQuery 包装在这个函数中:
函数 FunctionName() { jQuery(document).ready(function($){
// 这里所有的 jQuery 代码;
}); }
尝试加载函数 onLoad,
window.addEventListener
如果可能,使用,否则调用内置函数AddLoadEvent()
不知何故,实现中存在缺陷,但逻辑对我来说似乎是正确的。我将如何在 Google Chrome 中使用不同函数名称的相同代码的多个实例进行此操作?在所有其他浏览器中似乎都很好,除了谷歌浏览器。
谢谢