Javascript/CSS加载并附加到文档

Javascript/CSS加载并附加到文档,javascript,jquery,Javascript,Jquery,我已经编写了一个jQuery插件,但我想让它检查jQuery是否已加载,如果未加载,则加载它,以及其他几个javascript文件,并检查CSS文件是否已加载,如果未加载,则加载它 我想知道怎么做 非常感谢您抽出时间。以下几点应该可以。不过,它可能没有完全优化 if (typeof jQuery == "undefined") { var js = document.createElement("script"); js.setAttribute("src",...path to

我已经编写了一个jQuery插件,但我想让它检查jQuery是否已加载,如果未加载,则加载它,以及其他几个javascript文件,并检查CSS文件是否已加载,如果未加载,则加载它

我想知道怎么做


非常感谢您抽出时间。

以下几点应该可以。不过,它可能没有完全优化

if (typeof jQuery == "undefined") {
    var js = document.createElement("script");
    js.setAttribute("src",...path to jquery...);
    js.setAttribute("type","text/javascript");
    document.head.appendChild(js);
    //ditto for other files you mentioned 
}

function isCSSLoaded(uri) {
    var links = document.getElementsByTagName("link");
    for (var i =0, len = links.length; i<len;++i) {
        if (links[i].getAttribute("src") === uri) return true;
    }
    return false;
}

if (isCSSLoaded(...pathToYourCSSFile...) {
    var css = document.createElement("link");
    css.setAttribute("href",...path to css file...);
    css.setAttribute("media","screen");
    css.setAttribute("rel","stylesheet");
    css.setAttribute("type","text/css");
    document.head.appendChild(css);
    //ditto for other files you mentioned 
}
if(typeof jQuery==“未定义”){
var js=document.createElement(“脚本”);
setAttribute(“src”,…jquery的路径;
setAttribute(“type”、“text/javascript”);
document.head.appendChild(js);
//你提到的其他文件也一样
}
函数iscssload(uri){
var links=document.getElementsByTagName(“链接”);

对于(var i=0,len=links.length;i来说,下面的方法应该是可行的。不过,它可能没有完全优化

if (typeof jQuery == "undefined") {
    var js = document.createElement("script");
    js.setAttribute("src",...path to jquery...);
    js.setAttribute("type","text/javascript");
    document.head.appendChild(js);
    //ditto for other files you mentioned 
}

function isCSSLoaded(uri) {
    var links = document.getElementsByTagName("link");
    for (var i =0, len = links.length; i<len;++i) {
        if (links[i].getAttribute("src") === uri) return true;
    }
    return false;
}

if (isCSSLoaded(...pathToYourCSSFile...) {
    var css = document.createElement("link");
    css.setAttribute("href",...path to css file...);
    css.setAttribute("media","screen");
    css.setAttribute("rel","stylesheet");
    css.setAttribute("type","text/css");
    document.head.appendChild(css);
    //ditto for other files you mentioned 
}
if(typeof jQuery==“未定义”){
var js=document.createElement(“脚本”);
setAttribute(“src”,…jquery的路径;
setAttribute(“type”、“text/javascript”);
document.head.appendChild(js);
//你提到的其他文件也一样
}
函数iscssload(uri){
var links=document.getElementsByTagName(“链接”);

对于(var i=0,len=links.length;i您的插件,除非它在大小和复杂性上与jQuery相当,否则可能不应该加载jQuery。我认为简单地检查jQuery是否存在,如果不存在则抛出警告就足以让任何开发人员了解发生了什么


我想你可能正在开发一个插件,人们通常会在不“知道”是否有jQuery的情况下包含它。

除非你的插件在大小和复杂度上与jQuery相当,否则你可能不应该加载jQuery。我想,简单地检查jQuery是否存在,如果没有,则抛出警告就足够了开发人员需要了解正在发生的事情

我想您可能正在开发一个插件,人们通常会在不“知道”是否有jQuery的情况下包含该插件。

以检测是否加载了CSS 将此添加到CSS中:

._css_loaded_test {
  display: none;
}
定义此JavaScript函数:

function cssIsLoaded() {
  var test = document.createElement("div");
  test.className = "_css_loaded_test";
  return getComputedStyle(test, null).display === "none";
}
检测是否加载了jQuery 使用此JavaScript检测是否加载了jQuery:

if (typeof jQuery !== "undefined") {
  // put your code here
}
检测是否加载了CSS 将此添加到CSS中:

._css_loaded_test {
  display: none;
}
定义此JavaScript函数:

function cssIsLoaded() {
  var test = document.createElement("div");
  test.className = "_css_loaded_test";
  return getComputedStyle(test, null).display === "none";
}
检测是否加载了jQuery 使用此JavaScript检测是否加载了jQuery:

if (typeof jQuery !== "undefined") {
  // put your code here
}

您的iscssload函数不检查CSS是否已加载,只检查标记是否与指定的src一起出现。如果我以编程方式创建链接标记并将其与src、X一起放入文档中,然后立即使用您的函数,它将错误地说CSS已加载。您的iscssload函数不检查r是否已加载CSS,只是标记与指定的src一起出现。如果我以编程方式创建一个链接标记,并将其与src、X一起放入文档中,然后立即使用您的函数,则会错误地说CSS已加载。我也不关心ie:),但我不认为
getComputedStyle()
将适用于ie8及之前的版本。可能使用
currentStyle
-请参阅:我也不关心ie:),但我认为
getComputedStyle()
将不适用于ie8及之前的版本。可能使用
currentStyle
-请参阅: